Archived
1
0
Fork 0

Added IRC connection and initialisation stuff.

This commit is contained in:
Julien Dessaux 2009-08-06 00:11:14 +02:00
parent 45ebb68aa0
commit b9c8e4d404
4 changed files with 34 additions and 5 deletions

View file

@ -1,11 +1,15 @@
module Hsbot.IRC
( IrcInput(..)
, IrcOutput(..)
, connectServer
, initServer
, parseIrcMsg
)where
import qualified Network.IRC as Irc
import System.IO (Handle)
import Control.Monad
import Network
import qualified Network.IRC as IRC
import System.IO
import Hsbot.Core
@ -32,3 +36,22 @@ data IrcOutput = Str String -- a regular string
parseIrcMsg :: String -> IrcInput
parseIrcMsg _ = Err "Parsing not yet implemented"
-- | Connects to a server
connectServer :: IrcServer -> IO (IrcServer, Handle)
connectServer server = do
let name = address server
port_number = port server
handle <- connectTo name (PortNumber $ fromIntegral port_number)
hSetBuffering handle NoBuffering
return (server, handle)
-- | Setup a newly connected server by sending nick and join stuff
initServer :: (IrcServer, Handle) -> IO ()
initServer (server, handle) = do
sendstr handle (IRC.encode $ IRC.nick (nickname server))
sendstr handle (IRC.encode $ IRC.user (nickname server) "0" "*" (realname server))
when (not . null $ (password server)) $ do
sendstr handle (IRC.encode $ IRC.privmsg "nickserv" ("identify" ++ (password server)))
mapM_ (sendstr handle . IRC.encode . IRC.joinChan) (channels server)
return ()