36 lines
1,009 B
Haskell
36 lines
1,009 B
Haskell
module Hsbot.Message
|
|
( processInternalMessage
|
|
) where
|
|
|
|
import Control.Monad.State
|
|
import qualified Data.Map as M
|
|
|
|
import Hsbot.PluginUtils
|
|
import Hsbot.Types
|
|
|
|
-- | Processes an internal message
|
|
processInternalMessage :: BotMsg -> Bot ()
|
|
processInternalMessage (IntMsg msg)
|
|
| msgTo msg == "CORE" = processCoreMessage msg
|
|
| otherwise = do
|
|
plugins <- gets botPlugins
|
|
case M.lookup (msgTo msg) plugins of
|
|
Just (plugin, _) -> sendToPlugin (IntMsg msg) plugin
|
|
Nothing -> return ()
|
|
processInternalMessage _ = return ()
|
|
|
|
processCoreMessage :: Msg -> Bot ()
|
|
processCoreMessage msg = do
|
|
case msgCmd msg of
|
|
"UPDATE" -> processUpdateCommand msg
|
|
_ -> return ()
|
|
|
|
-- | Process an update command
|
|
processUpdateCommand :: Msg -> Bot ()
|
|
processUpdateCommand msg = do
|
|
bot <- get
|
|
let oldData = botResumeData bot
|
|
from = msgFrom msg
|
|
stuff = msgCmd msg
|
|
put $ bot { botResumeData = M.insert from stuff oldData }
|
|
|