summaryrefslogtreecommitdiff
path: root/HsbotIrcBot/Hsbot/Irc/Core.hs
diff options
context:
space:
mode:
Diffstat (limited to 'HsbotIrcBot/Hsbot/Irc/Core.hs')
-rw-r--r--HsbotIrcBot/Hsbot/Irc/Core.hs26
1 files changed, 13 insertions, 13 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)