summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fig-monitor-discord/src/Fig/Monitor/Discord.hs23
-rw-r--r--fig-monitor-discord/src/Fig/Monitor/Discord/Utils.hs4
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