#from common.networkservices import ChanServ
from common import log, queries #userstatus, do_everything_to, log, font, queries
#from events.common import Aggressiveness, Lastact

def process_event(self, connection, event):
    log.info(event) # Log to console

    # Get and update resources.
    reason = event.arguments[1]
    kicker = queries.create_or_get_and_update_last_event(self, 'user', 'ck', channel_name=event.target, user_name=event.source.nick, event_content=reason, event_subject_name=event.arguments[0])
    channel = queries.create_or_get_and_update_last_event(self, 'channel', 'ck', channel_name=event.target, user_name=event.source.nick, event_content=reason, event_subject_name=event.arguments[0])
    kicked = queries.create_or_get_and_update_last_event(self, 'user','ck', channel_name=event.target, user_name=event.arguments[0], event_content=reason, event_subject_name=event.source.nick)

    # Record kick event in database.
    if not self.db.one('SELECT id FROM rotbot_kick WHERE network_id=$(network_id)s AND channel_id=$(channel_id)s AND kicker_id=%(kicker_id)s AND kicked_id=%(kicked_id)s', network_id=self.network.id, channel_id=channel.id, kicker_id=kicker.id, kicked_id=kicked.id): # No records for kicker channel combination.
        self.db.run('INSERT INTO rotbot_kick (network_id, channel_id, kicker_id, kicked_id, amount) VALUES (%(network_id)s, %(channel_id)s, %(kicker_id)s, %(kicked_id)s), 1', network_id=self.network.id, channel_id=channel.id, kicker_id=kicker.id, kicked_id=kicked.id)  # Create record.
    else:
        self.db.run('UPDATE rotbot_kick SET amount = amount + 1 WHERE network_id=$(network_id)s AND channel_id=$(channel_id)s AND kicker_id=%(kicker_id)s AND kicked_id=%(kicked_id)s', network_id=self.network.id, channel_id=channel.id, kicker_id=kicker.id, kicked_id=kicked.id) # Update record.

    # # Update protectees if needed.
    # if channel == self.homechannel: # Kicked from home channel
    #     if event.source.nick in self.protectees:    # Protectee kicked.
    #         del self.protectees[event.source.nick]  # Remove old nick from list.
    #
    # # Do nothing more when user is not protected.
    # if not userstatus.atleast_halfop(self, kicked, self.homechannel) and not kicked == connection.get_nickname():
    #     return
    #
    # # Report.
    # if not channel == self.homechannel: # Not kicked from homechannel.
    #     if reason:
    #         connection.privmsg(self.homechannel, red + kicked + reset + " has been kicked from " + red + channel + reset + " by " + red + kicker + reset + ": " + green + reason)
    #     else:
    #         connection.privmsg(self.homechannel, red + kicked + reset + " has been kicked from " + red + channel + reset + " by " + red + kicker + reset + ".")
    #
    # # React.
    # print("Reacting to kick")
    # behaviour = self.db.one("SELECT aggressiveness FROM channels WHERE name='" + channel + "' AND network='" + self.network + "'")
    # if behaviour == "passive":    # Passive behaviour.
    #     if kicked == connection.get_nickname() and channel == self.homechannel: # Bot was kicked from it's home channel.
    #         ChanServ.unban(connection, channel, kicked)
    #         ChanServ.akick_del(connection, channel, kicked)
    #         connection.privmsg("ChanServ", "UNBAN " + channel)
    #         do_everything_to.join(self, connection, self.homechannel)
    # elif behaviour == "defense_only":   # Defensive behaviour.
    #     ChanServ.unban(connection, channel, kicked)
    #     ChanServ.akick_del(connection, channel, kicked)
    #     if kicked == connection.get_nickname(): # Bot was kicked.
    #         connection.privmsg("ChanServ", "UNBAN " + channel)
    #         do_everything_to.join(self, connection, channel)
    # elif behaviour == "equal_retalliation":   # Equal retalitory behaviour.
    #     ChanServ.akick_del(connection, channel, kicked)
    #
    #     # Rejoin if bot was kicked.
    #     if kicked == connection.get_nickname():
    #         connection.privmsg("ChanServ", "UNBAN " + channel)
    #         do_everything_to.join(self, connection, self.homechannel)
    #
    #     if event.source.nick == connection.get_nickname() or self.channels[self.homechannel].is_owner(kicker):
    #         return  # Stop if offender is bot or owner.
    #     if not userstatus.atleast_halfop(self, kicked, self.homechannel) or not kicked == connection.get_nickname():
    #         return  # Stop if offended is not atleast halfop and is not the bot itself.
    #     if userstatus.atleast_halfop(self, kicker, self.homechannel) and not self.channels[self.homechannel].is_owner(kicked):
    #         return  # Stop if offender is at least halfop in the home channel and the offended is not owner.
    #
    #     # Kick.
    #     do_everything_to.kick(connection, channel, kicker, Aggressiveness.retalliation_reason(self, connection, kicked, behaviour))
    #
    # # Battlebot behaviour.
    # elif behaviour == "battlebot":
    #     ChanServ.akick_del(connection, channel, kicked)
    #
    #     # Rejoin if bot was kicked.
    #     if kicked == connection.get_nickname():
    #         print("Rejoining " + channel)
    #         do_everything_to.join(self, connection, channel)
    #
    #     if event.source.nick == connection.get_nickname() or self.channels[self.homechannel].is_owner(kicker):
    #         print("Stop if offender is bot or owner")
    #         return  # Stop if offender is bot or owner.
    #     if not userstatus.atleast_halfop(self, kicked, self.homechannel) or not kicked == connection.get_nickname():
    #         print("Stop if offended is not atleast halfop and is not the bot itself")
    #         return  # Stop if offended is not atleast halfop and is not the bot itself.
    #     if userstatus.atleast_halfop(self, kicker, self.homechannel) and not self.channels[self.homechannel].is_owner(kicked):
    #         print("Stop if offender is at least halfop in the home channel and the offended is not owner")
    #         return  # Stop if offender is at least halfop in the home channel and the offended is not owner.
    #     print("Kickbanning")
    #
    #     ChanServ.tempban(connection, channel, kicker, "1h", "Aggression channel function = equal_retalliation: " + kicked)
    #     connection.mode(channel, "+e " + kicked)  # Excempt operator.
    #     ChanServ.akick_add(connection, channel, kicker) # Add kicker to ChanServs autokick.
    #     do_everything_to.bankick(connection, channel, kicker, event.source, "Aggression channel function = equal_retalliation: " + kicked)
