blob: b1e6c43fc7e6f3e83f6a1b0dc116e819f0617b20 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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 ())
|