diff options
author | Teddy Wing | 2017-08-13 19:03:02 +0200 |
---|---|---|
committer | Teddy Wing | 2017-08-13 19:03:02 +0200 |
commit | 5f157d66a001224fd623b63e92505aa058599942 (patch) | |
tree | aaaf07fdb489e868209321e80be2ab45b6b58a64 /src/IRC.hs | |
parent | 9209ccaadc40c294c85a8191a02330abea133bd6 (diff) | |
download | sorbot-5f157d66a001224fd623b63e92505aa058599942.tar.bz2 |
Lib.hs: Move IRC-related code to a new "IRC" module
Now that we have something sort of working on the IRC side of things, we
can move it out into its own module to keep `Lib` clear and tidy.
Diffstat (limited to 'src/IRC.hs')
-rw-r--r-- | src/IRC.hs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/IRC.hs b/src/IRC.hs new file mode 100644 index 0000000..127439d --- /dev/null +++ b/src/IRC.hs @@ -0,0 +1,33 @@ +{-# LANGUAGE OverloadedStrings #-} + +module IRC + ( connectIRC + ) where + +import qualified Data.ByteString as B +import qualified Data.Text as T + +import qualified Network.IRC.Client as IRC + +connectIRC :: B.ByteString -> Int -> T.Text -> IO () +connectIRC host port nick = do + conn <- IRC.connectWithTLS host port 1 + let cfg = IRC.defaultIRCConf nick + let cfg' = cfg { + IRC._eventHandlers = handlePrivmsg : IRC._eventHandlers cfg + , IRC._channels = ["#test-chan-13513"] + } + IRC.start conn cfg' + +handlePrivmsg :: IRC.EventHandler s +handlePrivmsg = IRC.EventHandler + { IRC._description = "" + , IRC._matchType = IRC.EPrivmsg + , IRC._eventFunc = \evt -> dispatchEvent evt + } + where + dispatchEvent (IRC.Event _ (IRC.User nick) (IRC.Privmsg _ (Right msg))) = + IRC.send $ IRC.Privmsg nick (Right "test") + dispatchEvent (IRC.Event + _ (IRC.Channel chan nick) (IRC.Privmsg _ (Right msg))) = + IRC.send $ IRC.Privmsg chan (Right "test") |