on_join.py 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. bold = "\x02"
  2. italic = "\x1D"
  3. underline = "\x1F"
  4. reverse = "\x16" # swap background and foreground colors ("reverse video")
  5. reset = "\x0F"
  6. blue = "\x0302"
  7. green = "\x0303"
  8. red = "\x0304"
  9. grey = "\x0314"
  10. def process_event(self, connection, event):
  11. # Add join event to database for statistics.
  12. if not self.db.one("SELECT id FROM channels WHERE name='" + event.target + "' AND network='" + self.network + "'"): # Channel does not exist in database.
  13. print("INFO Adding channel " + event.target + " to the database.")
  14. self.db.run("INSERT INTO channels (name, network) VALUES ('" + event.target + "', '" + self.network + "')")
  15. if not self.db.one("SELECT id FROM users WHERE name='" + event.source.nick + "' AND network='" + self.network + "'"): # User does not exist in database.
  16. print("INFO Adding user " + event.source.nick + " to the database.")
  17. self.db.run("INSERT INTO users (name, network) VALUES ('" + event.source.nick + "', '" + self.network + "')")
  18. if not self.db.one("SELECT id FROM joins WHERE channel='" + event.target + "' AND channel_network='" + self.network + "' AND \"user\"='" + event.source.nick + "' AND user_network='" + self.network + "'"): # No record yet
  19. self.db.run("INSERT INTO joins (channel, channel_network, \"user\", user_network, joins) VALUES ('" + event.target + "', '" + self.network + "', '" + event.source.nick + "', '" + self.network + "', 0)")
  20. self.db.run("UPDATE joins SET joins = joins + 1 WHERE channel='" + event.target + "' AND channel_network='" + self.network + "' AND \"user\"='" + event.source.nick + "' AND user_network='" + self.network + "'")
  21. if event.source.nick == connection.get_nickname(): # The bot joined a channel.
  22. return
  23. # If channelsettings permit show welcome message.
  24. joins = self.db.one("SELECT joins FROM joins WHERE channel='" + event.target + "' AND channel_network='" + self.network + "' AND \"user\"='" + event.source.nick + "' AND user_network='" + self.network + "'")
  25. if not self.db.one("SELECT join_greeting FROM channels WHERE name='" + event.target + "' AND network ='" + self.network + "'"): # Do not greet users joining the channel.
  26. return
  27. if joins == 1:
  28. message = "Welcome to " + red + event.target + reset + ", " + red + event.source.nick + reset + ". For a list of command type " + blue + self.cmdchar + "!cmd" + reset + "."
  29. if joins == 3:
  30. message = "Welcome back in " + red + event.target + reset + ", " + red + event.source.nick + reset + ". Tip: To turn of greetings, type " + blue + "!stopgreet " + reset + "."
  31. if joins == 5:
  32. if self.channels[event.target].has_key(): # Channel has a password.
  33. message = "Welcome back again " + red + event.source.nick + reset + ". To automaticly join this channel type " + blue + "/ns ajoin " + reset + "ADD " + red + event.source.nick + " " + event.target + reset + italic + " password"
  34. else: # Channel does not have a password.
  35. message = "Welcome back again " + red + event.source.nick + reset + ". To automaticly join this channel type " + blue + "/ns ajoin " + reset + "ADD " + red + event.source.nick + " " + event.target
  36. if joins < 100 and str(joins)[-1:] == "0":
  37. message = red + event.source.nick + reset + " you have joined " + red + event.target + reset + " " + joins + " times!"
  38. if joins < 1000 and str(joins)[-2:] == "00" or joins < 1000 and str(joins)[-2:] == "50":
  39. message = "Epic! " + red + event.source.nick + reset + " you have joined " + red + event.target + reset + " " + joins + " times!"
  40. if joins < 10000 and str(joins)[-2:] == "00":
  41. message = "AMAZING! " + red + event.source.nick + reset + " you have joined " + red + event.target + reset + " " + joins + " times!"
  42. try:
  43. connection.privmsg(event.target, message)
  44. except:
  45. pass