diff options
| -rw-r--r-- | fig-monitor-discord/src/Fig/Monitor/Discord.hs | 23 | ||||
| -rw-r--r-- | fig-monitor-discord/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 |
