on_kick.py 2.5 KB

1234567891011121314151617181920212223242526272829
  1. def process_event(self, connection, event):
  2. kicker = event.source.nick
  3. channel = event.target
  4. kicked = event.arguments[0]
  5. #reason = event.arguments[1]
  6. # Create user records if they don't exist.
  7. if not self.db.one("SELECT id FROM users WHERE name='" + kicker + "' AND network='" + self.network + "'"): # Kicker does not have a user record.
  8. self.db.run("INSERT INTO \"users\" (name, network) VALUES ('" + kicker + "', '" + self.network + "')") # Create user record.
  9. if not self.db.one("SELECT id FROM users WHERE name='" + kicked + "' AND network='" + self.network + "'"): # Kicked does not have a user record.
  10. self.db.run("INSERT INTO \"users\" (name, network) VALUES ('" + kicked + "', '" + self.network + "')") # Create user record.
  11. # Create kick records if they don't exist.
  12. if not self.db.one("SELECT id FROM kicks WHERE channel='" + channel + "'AND channel_network='" + self.network + "' AND \"user\"='" + kicker + "' AND user_network='" + self.network + "'"): # No records for kicker channel combination.
  13. self.db.run("INSERT INTO kicks (channel, channel_network, \"user\", user_network) VALUES ('" + channel + "', '" + self.network + "', '" + kicker + "', '" + self.network + "')")
  14. if not self.db.one("SELECT id FROM kicks WHERE channel='" + channel + "'AND channel_network='" + self.network + "' AND \"user\"='" + kicked + "' AND user_network='" + self.network + "'"): # No records for kicked channel combination.
  15. self.db.run("INSERT INTO kicks (channel, channel_network, \"user\", user_network) VALUES ('" + channel + "', '" + self.network + "', '" + kicked + "', '" + self.network + "')")
  16. # Save statistic.
  17. self.db.run("UPDATE kicks SET given = given + 1 WHERE channel='" + channel + "'AND channel_network='" + self.network + "' AND \"user\"='" + kicker + "' AND user_network='" + self.network + "'")
  18. self.db.run("UPDATE kicks SET received = received + 1 WHERE channel='" + channel + "'AND channel_network='" + self.network + "' AND \"user\"='" + kicked + "' AND user_network='" + self.network + "'")
  19. # React.
  20. if kicked == connection.get_nickname(): # Bot was kicked.
  21. if channel == self.homechannel: # From it's homechannel.
  22. connection.join(self.homechannel)
  23. return
  24. #if self.db.one("SELECT aggressiveness FROM channels WHERE name='" + channel + "' AND network='" + self.network + "'") == "passive"): # Passiev behaviour.
  25. #return # Do nothing.