diff options
author | Julien Dessaux | 2010-02-04 20:41:22 +0100 |
---|---|---|
committer | Julien Dessaux | 2010-02-04 20:41:22 +0100 |
commit | 46d9dd301dde46b1f0c4d8fe2aea58312cd9caa5 (patch) | |
tree | 9928dac9ddfb1745598c45b2338c959a5e157aa2 | |
parent | Added command registering and dispatching for plugins. (diff) | |
download | hsbot-46d9dd301dde46b1f0c4d8fe2aea58312cd9caa5.tar.gz hsbot-46d9dd301dde46b1f0c4d8fe2aea58312cd9caa5.tar.bz2 hsbot-46d9dd301dde46b1f0c4d8fe2aea58312cd9caa5.zip |
Implemented unregisterCommand.
-rw-r--r-- | Hsbot/Command.hs | 11 | ||||
-rw-r--r-- | TODO | 4 |
2 files changed, 13 insertions, 2 deletions
diff --git a/Hsbot/Command.hs b/Hsbot/Command.hs index 20e5525..92f304c 100644 --- a/Hsbot/Command.hs +++ b/Hsbot/Command.hs @@ -1,9 +1,11 @@ module Hsbot.Command ( dispatchCommand , registerCommand + , unregisterCommand ) where import Control.Monad.State +import qualified Data.List as L import qualified Data.Map as M import Data.Maybe @@ -39,14 +41,23 @@ registerCommand cmd pluginName' = do bot <- get cmds <- gets botCommands exists <- pluginExists pluginName' + -- TODO : improve this crap and remove at least one if! if exists then let cmds' = if cmd `M.member` cmds then cmds else M.singleton cmd [] + -- TODO : remove duplicates ? newCmds = M.adjust (++ [pluginName']) cmd cmds' in put $ bot { botCommands = newCmds } else traceM $ inColor ("Couldn't register command \"" ++ cmd ++ "\" for plugin \"" ++ pluginName' ++ "\" : plugin does not exists") [31] +unregisterCommand :: String -> String -> IrcBot () +unregisterCommand cmd pluginName' = do + bot <- get + cmds <- gets botCommands + let newCmds = M.adjust (L.delete pluginName') cmd cmds + put $ bot { botCommands = newCmds } + @@ -1,7 +1,7 @@ -* implement InternalCommands "register command" -* unregister command, add it to internal commands +* implement InternalCommands "register command" and "unregister command" * kill threads * unload plugin +* part chan * restore \r in IRCParser |