diff options
Diffstat (limited to 'fig-bridge-irc-discord/src/Fig/Bridge')
| -rw-r--r-- | fig-bridge-irc-discord/src/Fig/Bridge/IRCDiscord.hs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/fig-bridge-irc-discord/src/Fig/Bridge/IRCDiscord.hs b/fig-bridge-irc-discord/src/Fig/Bridge/IRCDiscord.hs new file mode 100644 index 0000000..b1e6c43 --- /dev/null +++ b/fig-bridge-irc-discord/src/Fig/Bridge/IRCDiscord.hs @@ -0,0 +1,32 @@ +{-# Language QuasiQuotes #-} + +module Fig.Bridge.IRCDiscord where + +import Fig.Prelude + +import Fig.Utils.SExpr +import Fig.Bus.Client + +bridge :: (Text, Text) -> IO () +bridge busAddr = do + busClient busAddr + (\cmds -> do + cmds.subscribe [sexp|(monitor irc chat incoming)|] + cmds.subscribe [sexp|(monitor discord chat incoming)|] + ) + (\cmds d -> do + case d of + SExprList [ev, user, _, msg] + | ev == [sexp|(monitor irc chat incoming)|] -> + cmds.publish [sexp|(monitor discord chat outgoing)|] + [ user + , msg + ] + | ev == [sexp|(monitor discord chat incoming)|] -> + cmds.publish [sexp|(monitor irc chat outgoing)|] + [ user + , msg + ] + _ -> log $ "Invalid message: " <> tshow d + ) + (pure ()) |
