hask-irc/hask-irc-handlers/Network/IRC/Handlers/Greet.hs

35 lines
1.2 KiB
Haskell

module Network.IRC.Handlers.Greet (greetMsgHandlerMaker) where
import ClassyPrelude
import Control.Monad.Reader (ask)
import Network.IRC.Types
import Network.IRC.Util
greetMsgHandlerMaker :: MsgHandlerMaker
greetMsgHandlerMaker = MsgHandlerMaker "greeter" go
where
go _ _ "greeter" = return . Just $ newMsgHandler { onMessage = greeter }
go _ _ "welcomer" = return . Just $ newMsgHandler { onMessage = welcomer }
go _ _ _ = return Nothing
greeter :: MonadMsgHandler m => FullMessage -> m [Command]
greeter FullMessage { .. } = case fromMessage message of
Just (ChannelMsg user msg) ->
return . maybeToList . map (toCommand . ChannelMsgReply . (++ nickToText (userNick user)) . (++ " "))
. find (== clean msg) $ greetings
_ -> return []
where
greetings = [ "hi", "hello", "hey", "sup", "bye"
, "good morning", "good evening", "good night" ]
welcomer :: MonadMsgHandler m => FullMessage -> m [Command]
welcomer FullMessage { .. } = case fromMessage message of
Just (JoinMsg user) -> do
BotConfig { .. } <- ask
return [toCommand . ChannelMsgReply $ "welcome back " ++ nickToText (userNick user)
| userNick user /= botNick]
_ -> return []