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 (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))