Files
ninachloe/FaustBot/Modules/UserList.py
2022-03-31 15:21:47 +02:00

57 lines
1.9 KiB
Python

from FaustBot.Model.RemoteUser import RemoteUser
from FaustBot.Modules.JoinObserverPrototype import JoinObserverPrototype
from FaustBot.Modules.ModuleType import ModuleType
from ..Modules.KickObserverPrototype import KickObserverPrototype
from ..Modules.LeaveObserverPrototype import LeaveObserverPrototype
from ..Modules.NickChangeObserverPrototype import NickChangeObserverPrototype
class UserList(JoinObserverPrototype, KickObserverPrototype, LeaveObserverPrototype, NickChangeObserverPrototype):
@staticmethod
def cmd():
return None
@staticmethod
def help():
return None
def __init__(self):
super().__init__()
self.userList = {}
@staticmethod
def get_module_types():
return [ModuleType.ON_JOIN, ModuleType.ON_KICK, ModuleType.ON_LEAVE, ModuleType.ON_NICK_CHANGE]
def update_on_kick(self, data, connection):
if data['nick'] in self.userList:
del self.userList[data['nick']]
# print(self.userList)
def update_on_leave(self, data, connection):
if data['nick'] in self.userList:
del self.userList[data['nick']]
# print(self.userList)
def update_on_join(self, data, connection):
self.userList[data['nick']] = RemoteUser(data['nick'], data['user'], data['host'])
# print(self.userList)
def update_on_nick_change(self, data, connection):
if data['old_nick'] in self.userList:
remuser = self.userList[data['old_nick']]
del self.userList[data['old_nick']]
else:
# shouldn't happen but let's be safe.
remuser = RemoteUser('UN.KNOWN', 'UN.KNOWN', 'UN.KNOWN')
remuser.nick = data['new_nick']
self.userList[data['new_nick']] = remuser
# print(self.userList)
def clear_list(self):
self.userList = {}
def add_user(self, remuser):
self.userList[remuser.nick] = remuser