summaryrefslogtreecommitdiff
path: root/Hsbot/Main.hs
blob: dad568ab36035a20d582b6d070373c89b2870269 (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
33
34
35
36
37
38
module Hsbot.Main
    ( imain
    ) where

import Control.Concurrent
import Control.Concurrent.Chan
import Control.Monad
import System.IO
import System.Plugins

import qualified Config as C
import Hsbot.Core
import Hsbot.IRC

type Reboot = (Module -> Bot -> IO ())

-- | Bot's first main entry point
imain :: Module -> Reboot -> IO ()
imain modul' reboot = imain' modul' reboot newbot

-- | Bot's main entry point
imain' :: Module -> Reboot -> Bot -> IO ()
imain' modul' reboot bot = do
    putStrLn "yeah"
    putStrLn "Connecting servers..."
    servers' <- mapM connectServer (ircServers C.config)
    putStrLn "Joining channels..."
    mapM_ initServer servers'
    return ()

-- | Thread entry point for socket listeners
listener :: (Chan IrcOutput) -> (IrcServer, Handle) -> IO ()
listener chan (server, handle) = forever $ do
    str <- hGetLine handle
    writeChan chan (Str str)
    if ping str then pong handle str
      else return ()