diff options
-rw-r--r-- | main.hs | 27 |
1 files changed, 21 insertions, 6 deletions
@@ -2,21 +2,36 @@ import Control.Monad (forever) import Network (withSocketsDo, PortID(..), connectTo) +import Network.Socket (HostName, PortNumber) import System.IO (hSetBuffering, hSetNewlineMode, hPutStrLn, hClose, hGetLine, BufferMode(LineBuffering), universalNewlineMode, Handle) import Control.Concurrent.Async (race) import Control.Exception.Base (finally) import Data.Text (isPrefixOf, pack, replace, unpack) + +nick :: String +nick = "ni" + +chan :: String +chan = "#retiolum" + +server_hostname :: HostName +server_hostname = "ni.r" + +server_port :: PortNumber +server_port = 6667; + + main :: IO () main = withSocketsDo $ do - h <- connectTo "ni.r" (PortNumber 6667) + h <- connectTo server_hostname (PortNumber server_port) talk h `finally` hClose h handshake :: Handle -> IO () handshake h = do - hPutStrLn h "NICK test" - hPutStrLn h "USER test * 0 :test" - hPutStrLn h "JOIN #retiolum" + hPutStrLn h ("NICK " ++ nick) + hPutStrLn h ("USER " ++ nick ++ " * 0 :" ++ nick) + hPutStrLn h ("JOIN " ++ chan) talk :: Handle -> IO () talk h = do @@ -36,5 +51,5 @@ talk h = do toServer = do line <- getLine case line of - ":quit" -> do hPutStrLn h "/quit"; return "Quit" - _ -> do hPutStrLn h ("PRIVMSG #retiolum :" ++ line); toServer + ":quit" -> do hPutStrLn h "/quit"; return () + _ -> do hPutStrLn h ("PRIVMSG " ++ chan ++ " :" ++ line); toServer |