diff options
author | Julien Dessaux | 2010-08-20 19:08:13 +0200 |
---|---|---|
committer | Julien Dessaux | 2010-08-20 23:36:00 +0200 |
commit | 8bbe88a07879a4c3c6205756135972df33aa9b09 (patch) | |
tree | db17b54190127816b062db1d0ace6350e69e6aab | |
parent | Greatly improved configuration file handling. (diff) | |
download | hsbot-8bbe88a07879a4c3c6205756135972df33aa9b09.tar.gz hsbot-8bbe88a07879a4c3c6205756135972df33aa9b09.tar.bz2 hsbot-8bbe88a07879a4c3c6205756135972df33aa9b09.zip |
Improved message dispatching in core.
-rw-r--r-- | HsbotIrcBot/Hsbot/Irc/Core.hs | 26 | ||||
-rw-r--r-- | 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) @@ -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 + |