respondToKick e@(SKick (SUser nick _ _) ch@(RChannel _) target reason) = do
    ownNick <- getGlobal' botNick
    if target /= ownNick then return ()
    else do modGlobal currChanList (delete (fromR ch))
            putLogInfo ("Kicked from " ++ show ch ++" by " ++ nick ++ ": " ++ reason)
            autojoin <- getGlobal' autoJoinList
            when (fromR ch `elem` autojoin) $ signalEvent UnReady
            runInSPriority 5 $ joinChannels [fromR ch]

-- | If we're unable to join a channel, we want to record why, and then
-- retry joining in 10 seconds.
respondToKick e@(SKick (SUser nick _ _) ch@(RChannel _) target reason) = do
    ownNick <- getGlobal' botNick
    if target /= ownNick then return ()
    else do modGlobal currChanList (delete (fromR ch))
            putLogInfo ("Kicked from " ++ show ch ++" by " ++ nick ++ ": " ++ reason)
            autojoin <- getGlobal' autoJoinList
            when (fromR ch `elem` autojoin) $ signalEvent UnReady
            runInSPriority 5 $ joinChannels [fromR ch]

-- | If we're unable to join a channel, we want to record why, and then
-- retry joining in 10 seconds.
respondToKick e@(SKick (SUser nick _ _) ch@(RChannel _) target reason) = do
    ownNick <- getGlobal' botNick
    if target /= ownNick then return ()
    else do modGlobal currChanList (delete (fromR ch))
            putLogInfo ("Kicked from " ++ show ch ++" by " ++ nick ++ ": " ++ reason)
            autojoin <- getGlobal' autoJoinList
            when (fromR ch `elem` autojoin) $ signalEvent UnReady
            runInSPriority 5 $ joinChannels [fromR ch]

-- | If we're unable to join a channel, we want to record why, and then
-- retry joining in 10 seconds.