module Network.IRC.Bot.Part.Hello where
import Control.Monad.Trans (liftIO)
import Data.Maybe (fromMaybe)
import Data.ByteString (ByteString)
import Data.Monoid ((<>))
import Network.IRC.Bot.Log (LogLevel(Debug))
import Network.IRC.Bot.BotMonad (BotMonad(..), maybeZero)
import Network.IRC.Bot.Commands (PrivMsg(..),askSenderNickName, replyTo, 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) => ParsecT ByteString () m ()
helloCommand =
do try $ botPrefix >> string "hello"
logM Debug "helloPart"
target <- maybeZero =<< replyTo
logM Debug $ "target: " <> target
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 ()