module Network.IRC.Bot.Part.Hello where
import Control.Monad.Trans (liftIO)
import Data.Maybe (fromMaybe)
import Network.IRC.Bot.Log (LogLevel(Debug))
import Network.IRC.Bot.BotMonad (BotMonad(..), askSenderNickName)
import Network.IRC.Bot.Commands (PrivMsg(..), sendCommand)
import Network.IRC.Bot.Parsec (botPrefix, parsecPart)
import System.Random (randomRIO)
import Text.Parsec (ParsecT, (<|>), string, try)
helloPart :: (BotMonad m) => m ()
helloPart = parsecPart helloCommand
helloCommand :: (BotMonad m) => String -> ParsecT String () m ()
helloCommand target =
do try $ botPrefix >> string "hello"
logM Debug "helloPart"
mNick <- askSenderNickName
let greetings = ["Hello", "Howdy", "Greetings", "Word up"]
n <- liftIO $ randomRIO (0, length greetings 1)
let msg = greetings!!n ++ ", " ++ (fromMaybe "stranger" mNick)
sendCommand (PrivMsg Nothing [target] msg)
<|> return ()