From ff07633fb8f81577ffec409cbf0a3c7361990f6c Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Wed, 13 Apr 2011 20:15:55 +0200 Subject: Began a big refactoring/rewriting (again) --- Hsbot/Types.hs | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Hsbot/Types.hs (limited to 'Hsbot/Types.hs') diff --git a/Hsbot/Types.hs b/Hsbot/Types.hs new file mode 100644 index 0000000..ff57c49 --- /dev/null +++ b/Hsbot/Types.hs @@ -0,0 +1,54 @@ +module Hsbot.Types + ( Bot + , BotState (..) + , BotStatus (..) + , BotEnv (..) + , Env + , Message (..) + , PluginState (..) + ) where + +import Control.Concurrent +import qualified Data.Map as M +import Control.Monad.Reader +import Control.Monad.State +import qualified Network.IRC as IRC +import Network.TLS +import System.IO + +import Hsbot.Config + +-- The bot environment +type Env = ReaderT BotEnv + +data BotEnv = BotEnv + { envHandle :: Handle + , envChan :: Chan Message + , envQuitMv :: MVar (BotStatus) + , envThreadIdsMv :: MVar [ThreadId] + , envConfig :: Config + , envTLS :: Maybe TLSParams + , envTLSCtx :: Maybe TLSCtx + } + +-- The bot monad +type Bot = StateT BotState + +data BotState = BotState + { botPlugins :: M.Map String (PluginState, MVar (), ThreadId) + , botCommands :: M.Map String [String] + , botChannels :: [String] + , botNickname :: String + } + +-- The Plugin monad +data PluginState = PluginState + { pluginName :: String + , pluginChan :: Chan Message + } + +data BotStatus = BotContinue | BotExit | BotReload | BotRestart deriving (Show) + +data Message = IncomingMsg IRC.Message + | OutgoingMsg IRC.Message + -- cgit v1.2.3