2014-05-25 18:13:52 +05:30
|
|
|
module Network.IRC.Handlers.Greet (mkMsgHandler) where
|
|
|
|
|
|
|
|
import ClassyPrelude
|
2014-06-01 23:14:19 +05:30
|
|
|
import Control.Monad.Reader (ask)
|
2014-05-25 18:13:52 +05:30
|
|
|
|
|
|
|
import Network.IRC.Types
|
|
|
|
import Network.IRC.Util
|
|
|
|
|
2014-06-01 23:14:19 +05:30
|
|
|
mkMsgHandler :: MsgHandlerMaker
|
2014-05-25 18:13:52 +05:30
|
|
|
mkMsgHandler _ _ "greeter" = return . Just $ newMsgHandler { onMessage = greeter }
|
|
|
|
mkMsgHandler _ _ "welcomer" = return . Just $ newMsgHandler { onMessage = welcomer }
|
|
|
|
mkMsgHandler _ _ _ = return Nothing
|
|
|
|
|
2014-06-01 06:48:24 +05:30
|
|
|
greeter :: MonadMsgHandler m => Message -> m [Command]
|
2014-05-25 18:13:52 +05:30
|
|
|
greeter Message { msgDetails = ChannelMsg { .. }, .. } =
|
2014-06-01 06:48:24 +05:30
|
|
|
return . maybeToList . map (ChannelMsgReply . (++ nickToText (userNick user)) . (++ " "))
|
2014-06-01 02:11:20 +05:30
|
|
|
. find (== clean msg) $ greetings
|
2014-05-25 18:13:52 +05:30
|
|
|
where
|
|
|
|
greetings = [ "hi", "hello", "hey", "sup", "bye"
|
|
|
|
, "good morning", "good evening", "good night" ]
|
2014-06-01 06:48:24 +05:30
|
|
|
greeter _ = return []
|
2014-05-25 18:13:52 +05:30
|
|
|
|
2014-06-01 06:48:24 +05:30
|
|
|
welcomer :: MonadMsgHandler m => Message -> m [Command]
|
2014-05-25 18:13:52 +05:30
|
|
|
welcomer Message { msgDetails = JoinMsg { .. }, .. } = do
|
|
|
|
BotConfig { .. } <- ask
|
|
|
|
if userNick user /= botNick
|
2014-06-01 06:48:24 +05:30
|
|
|
then return [ChannelMsgReply $ "welcome back " ++ nickToText (userNick user)]
|
|
|
|
else return []
|
2014-05-25 18:13:52 +05:30
|
|
|
|
2014-06-01 06:48:24 +05:30
|
|
|
welcomer _ = return []
|
2014-05-25 18:13:52 +05:30
|
|
|
|
|
|
|
|