nicklist.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import sys
  2. from util import strip_nick
  3. from event import Event
  4. try:
  5. if sys.version_info > (3, 0, 0):
  6. from .basemodule import BaseModule
  7. else:
  8. from basemodule import BaseModule
  9. except (ImportError, SystemError):
  10. from modules.basemodule import BaseModule
  11. class Nicklist(BaseModule):
  12. def post_init(self):
  13. nicklisting_self_join = Event("__.nicklisting_self_join__")
  14. nicklisting_other_join = Event("__.nicklisting_other_join__")
  15. nicklisting_quit = Event("__.nicklisting_quit__")
  16. nicklisting_part = Event("__.nicklisting_part__")
  17. nicklisting_command = Event("__.nicklist__")
  18. nicklisting_command.define(msg_definition="^\.nicklist")
  19. nicklisting_self_join.define(message_id=353)
  20. nicklisting_other_join.define(definition="JOIN")
  21. nicklisting_quit.define(definition="QUIT")
  22. nicklisting_part.define(definition="PART")
  23. nicklisting_command.subscribe(self)
  24. nicklisting_self_join.subscribe(self)
  25. nicklisting_other_join.subscribe(self)
  26. nicklisting_quit.subscribe(self)
  27. nicklisting_part.subscribe(self)
  28. # register ourself to our new custom event(s)
  29. self.bot.register_event(nicklisting_self_join, self)
  30. self.bot.register_event(nicklisting_other_join, self)
  31. self.bot.register_event(nicklisting_quit, self)
  32. self.bot.register_event(nicklisting_command,self)
  33. self.bot.register_event(nicklisting_part,self)
  34. self.bot.mem_store['nicklist'] = dict()
  35. def handle(self, event):
  36. if event.message_id == 353:
  37. self.bot.mem_store['nicklist'][event.channel] = event.line.split(":")[2].split()
  38. if event.msg.startswith(".nicklist"):
  39. print(self.bot.mem_store['nicklist'][event.channel])
  40. if event._type == "__.nicklisting_other_join__":
  41. try:
  42. self.bot.mem_store['nicklist'][event.channel].append(strip_nick(event.user))
  43. except KeyError:
  44. self.bot.mem_store['nicklist'][event.channel] = list()
  45. if event._type == "__.nicklisting_part__":
  46. try:
  47. self.bot.mem_store['nicklist'][event.channel].remove(strip_nick(event.user))
  48. except ValueError:
  49. pass
  50. if event._type == "__.nicklisting_quit__":
  51. try:
  52. for name, chan in self.bot.mem_store['nicklist'].items():
  53. chan.remove(strip_nick(event.user))
  54. except ValueError:
  55. pass