module Network.IRC.Bot.Part.NickUser where import Control.Monad.Trans (liftIO) import Network.IRC.Bot.BotMonad (BotMonad(..) ) import Network.IRC.Bot.Types (User(..)) import Network.IRC.Bot.ErrorCodes import Network.IRC.Bot.Log (LogLevel(..)) -- import Network.IRC.Bot.Commands (Ping(..), Pong(..), ping, sendCommand) import Network.IRC (Message(..)) import qualified Network.IRC as IRC import System.Random (randomRIO) nickUserPart :: (BotMonad m) => m () nickUserPart = do msg <- askMessage let cmd = msg_command msg case () of () | cmd == noNicknameGiven -> logM Important (show msg) | cmd == erroneusNickname -> logM Important (show msg) | cmd == nickCollision -> logM Important (show msg) | cmd == nicknameInUse -> do logM Important (show msg) n <- whoami i <- liftIO $ randomRIO (1, 100 :: Int) changeNickUser (n ++ show i) Nothing | otherwise -> return () changeNickUser :: (BotMonad m) => String -> Maybe User -> m () changeNickUser n mUser = do sendMessage (IRC.nick n) case mUser of Nothing -> return () (Just u) -> sendMessage (IRC.user (username u) (hostname u) (servername u) (realname u))