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 | 
