module HsBot.Callbacks (callbacksRun) where import HsBot.Base.Env import HsBot.Base.State import HsBot.Callbacks.Dummy import HsBot.Callbacks.PrintMessages import HsBot.Callbacks.MessageCounter registeredCallbacks = [dummy, printMessages, messageCounter] 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' <- callback str sendMessage env callbackAll restCallbacks env'