36 lines
1.1 KiB
Haskell
36 lines
1.1 KiB
Haskell
{-# LANGUAGE FlexibleContexts #-}
|
|
|
|
module Network.IRC.Handlers (coreMsgHandlerNames, mkMsgHandler) where
|
|
|
|
import qualified Network.IRC.Handlers.Auth as Auth
|
|
import qualified Network.IRC.Handlers.Core as Core
|
|
import qualified Network.IRC.Handlers.Greet as Greet
|
|
import qualified Network.IRC.Handlers.MessageLogger as Logger
|
|
import qualified Network.IRC.Handlers.NickTracker as NickTracker
|
|
import qualified Network.IRC.Handlers.SongSearch as SongSearch
|
|
|
|
import ClassyPrelude
|
|
import Control.Concurrent.Lifted (Chan)
|
|
|
|
import Network.IRC.Types
|
|
|
|
coreMsgHandlerNames :: [Text]
|
|
coreMsgHandlerNames = ["pingpong", "help"]
|
|
|
|
mkMsgHandler :: BotConfig -> Chan SomeEvent -> MsgHandlerName -> IO (Maybe MsgHandler)
|
|
mkMsgHandler botConfig eventChan name =
|
|
flip (`foldM` Nothing) handlerMakers $ \finalHandler handler ->
|
|
case finalHandler of
|
|
Just _ -> return finalHandler
|
|
Nothing -> handler botConfig eventChan name
|
|
|
|
where
|
|
handlerMakers = [
|
|
Auth.mkMsgHandler
|
|
, Core.mkMsgHandler
|
|
, Greet.mkMsgHandler
|
|
, Logger.mkMsgHandler
|
|
, NickTracker.mkMsgHandler
|
|
, SongSearch.mkMsgHandler
|
|
]
|