From e054e51cf843f0f0e8db225aa65f71186fef620b Mon Sep 17 00:00:00 2001 From: Abhinav Sarkar Date: Tue, 13 May 2014 03:21:41 +0530 Subject: [PATCH] Added message command for inter handler messaging --- Network/IRC/Client.hs | 7 ++++++- Network/IRC/Handlers/MessageLogger.hs | 4 ++++ Network/IRC/Types.hs | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Network/IRC/Client.hs b/Network/IRC/Client.hs index 50519a9..98595a7 100644 --- a/Network/IRC/Client.hs +++ b/Network/IRC/Client.hs @@ -80,6 +80,9 @@ readLineLoop mvBotStatus (lineChan, latch) bot@Bot { .. } timeoutDelay = do readLine :: Chan Line -> IO Line readLine = readChan +sendMessage :: Chan Line -> Message -> IO () +sendMessage = (. Line) . writeChan + listenerLoop :: Chan Line -> Chan Cmd -> Int -> IRC () listenerLoop lineChan commandChan idleFor = do status <- get @@ -122,7 +125,9 @@ listenerLoop lineChan commandChan idleFor = do mCmd <- runMsgHandler msgHandler botConfig message case mCmd of Nothing -> return () - Just cmd -> sendCommand commandChan (Cmd cmd) + Just cmd -> case cmd of + MessageCmd msg -> sendMessage lineChan msg + _ -> sendCommand commandChan (Cmd cmd) loadMsgHandlers :: BotConfig -> IO (Map MsgHandlerName MsgHandler) loadMsgHandlers botConfig@BotConfig { .. } = diff --git a/Network/IRC/Handlers/MessageLogger.hs b/Network/IRC/Handlers/MessageLogger.hs index 2ee3cff..5ae4b25 100644 --- a/Network/IRC/Handlers/MessageLogger.hs +++ b/Network/IRC/Handlers/MessageLogger.hs @@ -108,4 +108,8 @@ messageLogger NickMsg { .. } = withLogFile $ \logFile -> TF.hprint logFile "[{}] ** {} CHANGED NICK TO {}\n" $ TF.buildParams (fmtTime msgTime, userNick user, nick) +--messageLogger IdleMsg = const . liftIO $ do +-- now <- getCurrentTime +-- return . Just . MessageCmd $ + messageLogger _ = const $ return Nothing diff --git a/Network/IRC/Types.hs b/Network/IRC/Types.hs index eb58b16..d731cac 100644 --- a/Network/IRC/Types.hs +++ b/Network/IRC/Types.hs @@ -50,6 +50,7 @@ data Command = | NickCmd | UserCmd | JoinCmd + | MessageCmd Message deriving (Show, Eq) data BotConfig = BotConfig { server :: !Text