summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Dessaux2010-08-20 19:08:13 +0200
committerJulien Dessaux2010-08-20 23:36:00 +0200
commit8bbe88a07879a4c3c6205756135972df33aa9b09 (patch)
treedb17b54190127816b062db1d0ace6350e69e6aab
parentGreatly improved configuration file handling. (diff)
downloadhsbot-8bbe88a07879a4c3c6205756135972df33aa9b09.tar.gz
hsbot-8bbe88a07879a4c3c6205756135972df33aa9b09.tar.bz2
hsbot-8bbe88a07879a4c3c6205756135972df33aa9b09.zip
Improved message dispatching in core.
-rw-r--r--HsbotIrcBot/Hsbot/Irc/Core.hs26
-rw-r--r--TODO9
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
+