packages feed

funbot-0.1.0.0: src/FunBot/IrcHandlers.hs

{- This file is part of funbot.
 -
 - Written in 2015 by fr33domlover <fr33domlover@rel4tion.org>.
 -
 - ♡ Copying is an act of love. Please copy, reuse and share.
 -
 - The author(s) have dedicated all copyright and related and neighboring
 - rights to this software to the public domain worldwide. This software is
 - distributed without any warranty.
 -
 - You should have received a copy of the CC0 Public Domain Dedication along
 - with this software. If not, see
 - <http://creativecommons.org/publicdomain/zero/1.0/>.
 -}

module FunBot.IrcHandlers
    ( handleBotMsg
    , handleJoin
    --, handlePart
    --, handleQuit
    --, handleNames
    )
where

import Data.Char (toLower)
import FunBot.Memos (reportMemos)
import Network.IRC.Fun.Bot.Chat (sendToChannel)

helloWords :: [String]
helloWords = ["hello", "hi", "hey", "yo"]

waveWordsL :: [String]
waveWordsL = ["\\o", "\\O", "\\0"]

waveWordsR :: [String]
waveWordsR = ["o/", "O/", "0/"]

isHello :: String -> Bool
isHello s =
    let s' = map toLower s
    in     null s
        || s' `elem` helloWords
        || init s' `elem` helloWords && last s' `elem` ".!?"

handleBotMsg chan nick msg
    | isHello msg               = sendToChannel chan $ "Hello, " ++ nick
    | map toLower msg == "ping" = sendToChannel chan $ nick ++ ", pong"
    | msg `elem` waveWordsL     = sendToChannel chan $ nick ++ ": o/"
    | msg `elem` waveWordsR     = sendToChannel chan $ nick ++ ": \\o"
    | otherwise                 = return ()

handleJoin _chan nick = reportMemos nick

--handlePart chan nick _why = removeMemberOnce chan nick

--handleQuit nick _why = removeMember nick

--handleNames chan _priv pnicks = addChannel chan $ map snd pnicks