summaryrefslogtreecommitdiff
path: root/HsBot/Callbacks.hs
blob: 0bbf08fa95c0df32dd1d568bc7a0c1c0ffe2a18c (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
module HsBot.Callbacks (callbacksRun) where

import HsBot.Base.Env
import HsBot.Base.State

import HsBot.Callbacks.Base
import HsBot.Callbacks.MessageCounter
import HsBot.Callbacks.PrintMessages
import HsBot.Callbacks.StoreMessages
import HsBot.Callbacks.Dummy

registeredCallbacks = [
  makeMessageCounter,
  makePrintMessages, 
  makeStoreMessages, 
  makeDummy
  ]

callbacksRun :: String -> SendMessage -> Env -> IO Env
callbacksRun str sendMessage env@(Env state _) 
	| isReady state = callbackAll registeredCallbacks env
	| otherwise = do { putStrLn str; return (env) }
		where
			callbackAll [] env = return (env)
			callbackAll (callback:restCallbacks) env = do
				env' <- (cbFunction callback) str sendMessage env
				callbackAll restCallbacks env'