X-Git-Url: https://git.martlubbers.net/?p=cloogle-irc.git;a=blobdiff_plain;f=IRCBot.icl;h=3ea2f76e7c97ddb832741db81b267bfc7372463a;hp=6820e708bb1c05b10fcee61f1adbf0be471fd30d;hb=7d7475a1a10b1371d2bc7b2276914e9d3fdfee6a;hpb=840f4fd6696c7af6f42251cbb263fe7c86ff2e7b diff --git a/IRCBot.icl b/IRCBot.icl index 6820e70..3ea2f76 100644 --- a/IRCBot.icl +++ b/IRCBot.icl @@ -14,7 +14,7 @@ import StdBool TIMEOUT :== Just 1000 -bot :: (String, Int) [IRCMessage] [IRCMessage] .a (IRCMessage .a *World -> *(Maybe [IRCMessage], .a, *World)) *World -> *(Maybe String, .a, *World) +bot :: (String, Int) [IRCMessage] [IRCMessage] .a (IRCMessage -> (.a -> .(*World -> *(Maybe [IRCMessage], .a, *World)))) *World -> *(Maybe String, .a, *World) bot (host, port) start end state bot w //Lookup hostname # (ip, w) = lookupIPAddress host w @@ -27,7 +27,7 @@ bot (host, port) start end state bot w | rpt == TR_NoSuccess = (Just $ "Could not connect to " +++ host, state, w) // Send startup commands -# (merr, chan, w) = send (map toString start) (fromJust chan) w +# (merr, chan, w) = send [toString s +++ "\r\n" \\ s <- start] (fromJust chan) w | isError merr = (Just $ fromError merr, state, w) //Start processing function # (mer, chan, state, w) = process chan "" state bot w @@ -38,7 +38,7 @@ bot (host, port) start end state bot w //Close channels = (Nothing, state, closeChannel sChannel (closeRChannel rChannel w)) -process :: TCP_DuplexChannel String .a (IRCMessage .a *World -> *(Maybe [IRCMessage], .a, *World)) *World -> *(MaybeErrorString (), TCP_DuplexChannel, .a, *World) +process :: TCP_DuplexChannel String .a (IRCMessage -> (.a -> .(*World -> *(Maybe [IRCMessage], .a, *World)))) *World -> (MaybeErrorString (), TCP_DuplexChannel, .a, *World) process chan acc state bot w //See if we have a message = case split "\r\n" acc of @@ -59,7 +59,7 @@ process chan acc state bot w # (mircc, state, w) = bot msg state w | isNothing mircc = (Ok (), chan, state, w) // Bot asks to quit //Possible send the commands - # (merr, chan, w) = send (map toString $ fromJust mircc) chan w + # (merr, chan, w) = send [toString c +++ "\r\n" \\ c <- fromJust mircc] chan w | isError merr = (Error $ fromError merr, chan, state, w) //Recurse = process chan acc state bot w