diff options
Diffstat (limited to 'Hsbot/IRCPlugin.hs')
-rw-r--r-- | Hsbot/IRCPlugin.hs | 66 |
1 files changed, 0 insertions, 66 deletions
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) - |