From 05a334ad083504c917a4999990ed633e81595c96 Mon Sep 17 00:00:00 2001 From: LLLL Colonq Date: Thu, 7 Nov 2024 21:18:35 -0500 Subject: Multiple servers worth of emoticons --- fig-monitor-discord/src/Fig/Monitor/Discord.hs | 23 +++++++++++----------- .../src/Fig/Monitor/Discord/Utils.hs | 4 ++-- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/fig-monitor-discord/src/Fig/Monitor/Discord.hs b/fig-monitor-discord/src/Fig/Monitor/Discord.hs index 99c359d..629dc7e 100644 --- a/fig-monitor-discord/src/Fig/Monitor/Discord.hs +++ b/fig-monitor-discord/src/Fig/Monitor/Discord.hs @@ -73,17 +73,18 @@ discordBot cfg busAddr = do userId <- Dis.restCall Dis.GetCurrentUser >>= \case Left e -> throwM . FigMonitorDiscordException $ "Failed to retrieve discord user: " <> tshow e Right u -> pure $ Dis.userId u - let gid = Dis.DiscordId $ Dis.Snowflake $ fromIntegral cfg.guildId - emotes <- Dis.restCall (Dis.ListGuildEmojis gid) >>= \case - Left e -> throwM . FigMonitorDiscordException $ "Failed to retrieve server emoji: " <> tshow e - Right emotes -> pure . Map.fromList - $ Maybe.mapMaybe - (\e -> do - eid <- Dis.emojiId e - animated <- Dis.emojiAnimated e - pure (Dis.emojiName e, EmojiInfo { id = eid, animated }) - ) - emotes + emotes <- Map.unions <$> forM cfg.guildIds \guildId -> do + let gid = Dis.DiscordId $ Dis.Snowflake $ fromIntegral guildId + Dis.restCall (Dis.ListGuildEmojis gid) >>= \case + Left e -> throwM . FigMonitorDiscordException $ "Failed to retrieve server emoji: " <> tshow e + Right emotes -> pure . Map.fromList + $ Maybe.mapMaybe + (\e -> do + eid <- Dis.emojiId e + animated <- Dis.emojiAnimated e + pure (Dis.emojiName e, EmojiInfo { id = eid, animated }) + ) + emotes log $ tshow emotes liftIO . MVar.putMVar botInfo $ BotInfo{..} log "Initialized Discord bot" diff --git a/fig-monitor-discord/src/Fig/Monitor/Discord/Utils.hs b/fig-monitor-discord/src/Fig/Monitor/Discord/Utils.hs index bf9e661..dd3bba7 100644 --- a/fig-monitor-discord/src/Fig/Monitor/Discord/Utils.hs +++ b/fig-monitor-discord/src/Fig/Monitor/Discord/Utils.hs @@ -16,13 +16,13 @@ instance Exception FigMonitorDiscordException data Config = Config { authToken :: !Text - , guildId :: !Integer + , guildIds :: ![Integer] } deriving (Show, Eq, Ord) configCodec :: Toml.TomlCodec Config configCodec = do authToken <- Toml.text "auth_token" Toml..= (\a -> a.authToken) - guildId <- Toml.integer "guild_id" Toml..= (\a -> a.guildId) + guildIds <- Toml.arrayOf Toml._Integer "guild_id" Toml..= (\a -> a.guildIds) pure $ Config{..} loadConfig :: FilePath -> IO Config -- cgit v1.2.3