summaryrefslogtreecommitdiff
path: root/HsbotMaster/Hsbot/Message.hs
blob: 933394b4fd50fb0076d53ed8e6440433c4a790b3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
module Hsbot.Message
    ( processInternalMessage
    , processRebootMessage
    , processExitMessage
    ) where

import Control.Monad.State
import qualified Data.Map as M

import Hsbot.PluginUtils
import Hsbot.Types

-- | Processes an internal message
processInternalMessage :: Msg -> Bot (BotStatus)
processInternalMessage 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 ()
      return BotContinue

processCoreMessage :: Msg -> Bot (BotStatus)
processCoreMessage msg = do
    case msgType msg of
        "REBOOT" -> return BotReboot
        _        -> return BotContinue

processRebootMessage :: RebootMsg -> Bot (BotStatus)
processRebootMessage _ = return BotReboot   -- TODO : check who is sending that to us

processExitMessage :: ExitMsg -> Bot (BotStatus)
processExitMessage _ = return BotExit   -- TODO : check who is sending that to us