From c1662ba7b982a8502dc9f32031b7cb518df7f60e Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Sun, 16 May 2010 00:01:00 +0200 Subject: Rewrote nearly everything! * Rewrote the whole architecture to achieve extreme modularity * Added the ability to build a multiprotocol bot * Added cabal integration * Added configuration handling the XMonad style * Added configuration in ~/.hsbot * Refactored many many named and functions * Refactored data structures * Cleaned a big bunch of stuff --- Hsbot/IRCPlugin.hs | 66 ------------------------------------------------------ 1 file changed, 66 deletions(-) delete mode 100644 Hsbot/IRCPlugin.hs (limited to 'Hsbot/IRCPlugin.hs') diff --git a/Hsbot/IRCPlugin.hs b/Hsbot/IRCPlugin.hs deleted file mode 100644 index e0299fc..0000000 --- a/Hsbot/IRCPlugin.hs +++ /dev/null @@ -1,66 +0,0 @@ -module Hsbot.IRCPlugin - ( IrcPlugin - , PluginState(..) - , answerMsg - , readMsg - , sendCommand - , sendCommandWithRequest - , sendRegisterCommand - , sendUnregisterCommand - , writeMsg - ) where - -import Control.Concurrent.Chan -import Control.Monad.State -import Data.Maybe(fromMaybe) - -import Hsbot.Types - --- | The IrcPlugin monad -type IrcPlugin a = StateT PluginState IO a - --- | An IRCPlugin state -data PluginState = PluginState - { instanceName :: String -- The plugin's name - , instanceServerChan :: Chan BotMsg -- The server channel - , instanceChan :: Chan BotMsg -- The plugin channel - } - --- | Basic input output for IrcPlugins -readMsg :: IrcPlugin (BotMsg) -readMsg = do - chan <- gets instanceChan - input <- liftIO $ readChan chan - return input - -writeMsg :: BotMsg -> IrcPlugin () -writeMsg botMsg = do - serverChan <- gets instanceServerChan - liftIO . writeChan serverChan $ botMsg - -answerMsg :: IrcMsg -> String -> IrcPlugin () -answerMsg request msg = do - let chanOrigin = head $ parameters request - sender = takeWhile (/= '!') $ fromMaybe "" (prefix request) - case head chanOrigin of - '#' -> writeMsg . OutputMsg $ IrcMsg Nothing "PRIVMSG" [chanOrigin, msg] - _ -> writeMsg . OutputMsg $ IrcMsg Nothing "PRIVMSG" [sender, msg] - --- | Commands management -sendCommand :: String -> String -> String -> IrcPlugin () -sendCommand cmd to params = sendCommandWithRequest cmd to params emptyIrcMsg - -sendCommandWithRequest :: String -> String -> String -> IrcMsg -> IrcPlugin () -sendCommandWithRequest cmd to params originalRequest = do - serverChan <- gets instanceServerChan - from <- gets instanceName - liftIO . writeChan serverChan . InternalCmd $ IntCmd cmd from to params originalRequest - -sendRegisterCommand :: String -> IrcPlugin () -sendRegisterCommand cmd = sendCommand "REGISTER" "CORE" cmd - -sendUnregisterCommand :: String -> IrcPlugin () -sendUnregisterCommand cmd = sendCommand "UNREGISTER" "CORE" cmd - --- | a isAdmin helper : I need an admin plugin (to track admins' status around chans) - -- cgit v1.2.3