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

37 lines
1.3 KiB
Haskell

module Network.IRC.Handlers.Greet (greetMsgHandlerMaker, welcomeMsgHandlerMaker) where
import ClassyPrelude
import Network.IRC
import Network.IRC.Util
greetMsgHandlerMaker :: MsgHandlerMaker
greetMsgHandlerMaker =
MsgHandlerMaker "greeter" $ \_ _ -> return $ newMsgHandler { onMessage = greeter }
welcomeMsgHandlerMaker :: MsgHandlerMaker
welcomeMsgHandlerMaker =
MsgHandlerMaker "welcomer" $ \_ _ -> return $ newMsgHandler { onMessage = welcomer }
greeter :: MonadMsgHandler m => Message -> m [Message]
greeter Message { .. } = case fromMessage message of
Just (ChannelMsg user msg) ->
let reply = maybeToList . map (ChannelMsgReply . (++ nickToText (userNick user)) . (++ " "))
. find (== clean msg) $ greetings
in mapM newMessage reply
_ -> return []
where
greetings = [ "hi", "hello", "hey", "sup", "bye"
, "good morning", "good evening", "good night" ]
welcomer :: MonadMsgHandler m => Message -> m [Message]
welcomer Message { .. } = case fromMessage message of
Just (JoinMsg user) -> do
BotConfig { .. } <- ask
if userNick user /= botNick
then map singleton . newMessage . ChannelMsgReply $ "welcome back " ++ nickToText (userNick user)
else return []
_ -> return []