From 8bbe88a07879a4c3c6205756135972df33aa9b09 Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Fri, 20 Aug 2010 19:08:13 +0200 Subject: Improved message dispatching in core. --- HsbotIrcBot/Hsbot/Irc/Core.hs | 26 +++++++++++++------------- TODO | 9 ++++++--- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/HsbotIrcBot/Hsbot/Irc/Core.hs b/HsbotIrcBot/Hsbot/Irc/Core.hs index 525c3d6..a280549 100644 --- a/HsbotIrcBot/Hsbot/Irc/Core.hs +++ b/HsbotIrcBot/Hsbot/Irc/Core.hs @@ -105,26 +105,26 @@ ircBotCore = do -- | Dispatches an input message dispatchMessage :: IrcBotMsg -> IrcBot (BotStatus) dispatchMessage (InIrcMsg inIrcMsg) = do - config <- gets ircBotConfig - plugins <- gets ircBotPlugins - cmds <- gets ircBotCommands - if (isPluginCommand config) + bot <- get + let config = ircBotConfig bot + plugins = ircBotPlugins bot + cmds = ircBotCommands bot + if isPluginCommand config then - let key = tail . head $ words getMsgContent + let getMsgContent = unwords . tail $ ircMsgParameters inIrcMsg + key = tail . head $ words getMsgContent pluginNames = fromMaybe [] $ M.lookup key cmds plugins' = fromMaybe [] $ mapM (flip M.lookup plugins) pluginNames + sendRunCommand cmd plugin = sendToPlugin (IntIrcCmd $ IrcCmd "RUN" "CORE" (ircPluginName plugin) cmd inIrcMsg) plugin in mapM_ (sendRunCommand (tail getMsgContent) . first) plugins' else mapM_ (sendToPlugin (InIrcMsg inIrcMsg) . first) (M.elems plugins) return BotContinue where - isPluginCommand :: IrcConfig -> Bool - isPluginCommand config = - and [ ircMsgCommand inIrcMsg == "PRIVMSG" - , (head getMsgContent) == ircConfigCommandPrefix config ] - sendRunCommand :: String -> IrcPluginState -> IrcBot () - sendRunCommand cmd plugin = sendToPlugin (IntIrcCmd $ IrcCmd "RUN" "CORE" (ircPluginName plugin) cmd inIrcMsg) plugin - getMsgContent :: String - getMsgContent = unwords . tail $ ircMsgParameters inIrcMsg + isPluginCommand config = and [ ircMsgCommand inIrcMsg == "PRIVMSG", prefix == ircConfigCommandPrefix config ] + prefix | length msgWords >= 1 = head . head $ msgWords + | otherwise = ' ' + where + msgWords = tail $ ircMsgParameters inIrcMsg dispatchMessage _ = return (BotContinue) diff --git a/TODO b/TODO index 9e9f3c0..7ad46ba 100644 --- a/TODO +++ b/TODO @@ -1,10 +1,9 @@ :julien!~julien@ogu21.corp PRIVMSG #shbot :@quote graou snif -* Find a way to prevent the socket from being garbage collected, by writing a connection handler for example * Design another way to launch and manage hsbot and it's configuration -* Find a way to handle bot reloading threw exec -* Find a way so that not a single message/information would be lost in the case of a reboot +* Improved configuration file errors display +* implement quick quoting for one line quotes * write the vote system for the quote module * only the quote reporter should be able to edit it * detect too identical quoting in a raw, or implement quote abort @@ -28,3 +27,7 @@ * write a safe reload : try reload before unloading * remove from Types.hs what can be removed from it +* Find a way to handle bot reloading threw exec +* Find a way to prevent the socket from being garbage collected, by writing a connection handler for example +* Find a way so that not a single message/information would be lost in the case of a reboot + -- cgit v1.2.3