summaryrefslogtreecommitdiff
path: root/Plugins
diff options
context:
space:
mode:
authorJulien Dessaux2010-04-25 16:43:01 +0200
committerJulien Dessaux2010-04-25 16:43:01 +0200
commitb6d119cf5b14fd7198552e939d8f49b15307e74e (patch)
tree1f2188a89b159d6800ff89ed3346437aebfb2782 /Plugins
parentAdded an utility function to correctly answer a message we receive (aka /msg) (diff)
downloadhsbot-b6d119cf5b14fd7198552e939d8f49b15307e74e.tar.gz
hsbot-b6d119cf5b14fd7198552e939d8f49b15307e74e.tar.bz2
hsbot-b6d119cf5b14fd7198552e939d8f49b15307e74e.zip
Some refactoring + cosmetics.
Diffstat (limited to 'Plugins')
-rw-r--r--Plugins/Core.hs9
-rw-r--r--Plugins/Ping.hs2
-rw-r--r--Plugins/Quote.hs4
3 files changed, 7 insertions, 8 deletions
diff --git a/Plugins/Core.hs b/Plugins/Core.hs
index f6bd4ef..f81f4bf 100644
--- a/Plugins/Core.hs
+++ b/Plugins/Core.hs
@@ -5,7 +5,6 @@ module Plugins.Core
import Control.Concurrent.Chan(Chan)
import Control.Exception
import Control.Monad.State
-import Data.Maybe(fromMaybe)
import Prelude hiding (catch)
import Hsbot.IRCPlugin
@@ -15,7 +14,7 @@ import Hsbot.Utils
-- | The plugin's main entry point
mainCore :: Chan BotMsg -> Chan BotMsg -> IO ()
mainCore serverChan chan = do
- let plugin = PluginInstance "Core" serverChan chan
+ let plugin = PluginState "Core" serverChan chan
evalStateT (mapM_ sendRegisterCommand ["list", "load", "reload", "unload"]) plugin
plugin' <- (execStateT run plugin) `catch` (\(_ :: AsyncException) -> return plugin)
evalStateT (mapM_ sendUnregisterCommand ["list", "load", "reload", "unload"]) plugin'
@@ -36,15 +35,15 @@ run = forever $ do
"load" -> loadPlugin $ tail stuff
"reload" -> reloadPlugin $ tail stuff
"unload" -> unloadPlugin $ tail stuff
- _ -> lift $ trace $ show intCmd -- TODO : help message
+ _ -> lift . trace $ show intCmd -- TODO : help message
"ANSWER" -> let stuff = intCmdMsg intCmd
in answerMsg request ("Loaded plugins : " ++ stuff)
- _ -> lift $ trace $ show intCmd
+ _ -> lift . trace $ show intCmd
eval (InputMsg _) = return ()
eval _ = return ()
-- | The list command
-listPlugins :: Maybe IrcMsg -> IrcPlugin ()
+listPlugins :: IrcMsg -> IrcPlugin ()
listPlugins request = do
sendCommandWithRequest "LIST" "CORE" (unwords []) request
diff --git a/Plugins/Ping.hs b/Plugins/Ping.hs
index f478582..5da3f2f 100644
--- a/Plugins/Ping.hs
+++ b/Plugins/Ping.hs
@@ -13,7 +13,7 @@ import Hsbot.Types
-- | The plugin's main entry point
mainPing :: Chan BotMsg -> Chan BotMsg -> IO ()
mainPing serverChan chan = do
- let plugin = PluginInstance "Ping" serverChan chan
+ let plugin = PluginState "Ping" serverChan chan
_ <- (execStateT run plugin) `catch` (\(_ :: AsyncException) -> return plugin)
return ()
diff --git a/Plugins/Quote.hs b/Plugins/Quote.hs
index df16006..db473f9 100644
--- a/Plugins/Quote.hs
+++ b/Plugins/Quote.hs
@@ -29,9 +29,9 @@ type QuoteBot a = StateT QuoteDB IO a
-- | The plugin's main entry point
mainQuote :: Chan BotMsg -> Chan BotMsg -> IO ()
mainQuote serverChan chan = do
- let plugin = PluginInstance "Quote" serverChan chan
+ let plugin = PluginState "Quote" serverChan chan
evalStateT (mapM_ sendRegisterCommand ["quote"]) plugin
- (execStateT run plugin) `catch` (\(ex :: AsyncException) -> return plugin)
+ _ <- (evalStateT (run quoteBot) plugin) `catch` (\(_ :: AsyncException) -> return quoteBot)
evalStateT (mapM_ sendUnregisterCommand ["quote"]) plugin
-- | The IrcPlugin monad main function