hask-irc/Network/IRC/Handlers.hs

39 lines
1.2 KiB
Haskell

{-# LANGUAGE RecordWildCards, OverloadedStrings #-}
module Network.IRC.Handlers (getHandler) where
import qualified Data.List as L
import Data.Text
import Prelude hiding ((++))
import Network.IRC.Handlers.SongSearch
import Network.IRC.Types
clean :: Text -> Text
clean = toLower . strip
(++) :: Text -> Text -> Text
(++) = append
getHandler :: HandlerName -> Maybe Handler
getHandler "greeter" = Just $ Handler greeter
getHandler "welcomer" = Just $ Handler welcomer
getHandler "songsearch" = Just $ Handler songSearch
getHandler _ = Nothing
greeter :: Monad m => BotConfig -> Message -> m (Maybe Command)
greeter _ ChannelMsg { .. } = case L.find (== clean msg) greetings of
Nothing -> return Nothing
Just greeting -> return . Just . ChannelMsgReply $ greeting ++ " " ++ userNick user
where
greetings = ["hi", "hello", "hey", "sup", "bye"
, "good morning", "good evening", "good night"
, "ohayo", "oyasumi"]
greeter _ _ = return Nothing
welcomer :: Monad m => BotConfig -> Message -> m (Maybe Command)
welcomer BotConfig { .. } JoinMsg { .. }
| userNick user /= botNick = return . Just . ChannelMsgReply $ "welcome back " ++ userNick user
welcomer _ _ = return Nothing