def do_kick(self, send, target, nick, msg, slogan=True):
        """Kick users.

        - If kick is disabled, don't do anything.
        - If the bot is not a op, rage at a op.
        - Kick the user.

        """
        if not self.kick_enabled:
            return
        if target not in self.channels:
            send("%s: you're lucky, private message kicking hasn't been implemented yet." % nick)
            return
        with self.data_lock:
            ops = [k for k, v in self.opers[target].items() if v]
        botnick = self.config['core']['nick']
        if botnick not in ops:
            ops = ['someone'] if not ops else ops
            send(textutils.gen_creffett("%s: /op the bot" % random.choice(ops)), target=target)
        elif random.random() < 0.01 and msg == "shutting caps lock off":
            if nick in ops:
                send("%s: HUEHUEHUE GIBE CAPSLOCK PLS I REPORT U" % nick, target=target)
            else:
                self.connection.kick(target, nick, "HUEHUEHUE GIBE CAPSLOCK PLS I REPORT U")
        else:
            msg = textutils.gen_slogan(msg).upper() if slogan else msg
            if nick in ops:
                send("%s: %s" % (nick, msg), target=target)
            else:
                self.connection.kick(target, nick, msg)
Kick users.

        - If kick is disabled, don't do anything.
        - If the bot is not a op, rage at a op.
        - Kick the user.