Skip to content

Commit 24e1ea3

Browse files
committed
Move adding and removing statuses to Member object
1 parent b055e48 commit 24e1ea3

1 file changed

Lines changed: 28 additions & 19 deletions

File tree

plugins/chan_track.py

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,31 @@ def __init__(self, user, channel):
112112
self.status = []
113113
super().__init__()
114114

115+
def add_status(self, status, sort=True):
116+
if status in self.status:
117+
logger.warning(
118+
"[chantrack] Attempted to add existing status to channel member: %s %s",
119+
self, status
120+
)
121+
else:
122+
self.status.append(status)
123+
if sort:
124+
self.sort_status()
125+
126+
def remove_status(self, status):
127+
if status not in self.status:
128+
logger.warning(
129+
"[chantrack] Attempted to remove status not set on member: %s %s",
130+
self, status
131+
)
132+
else:
133+
self.status.remove(status)
134+
135+
def sort_status(self):
136+
status = list(set(self.status))
137+
status.sort(key=attrgetter("level"), reverse=True)
138+
self.status = status
139+
115140
def __init__(self, name):
116141
self.name = name
117142
self.users = KeyFoldDict()
@@ -268,15 +293,6 @@ def get_chan_data(bot):
268293
update_conn_data(conn)
269294

270295

271-
def sort_member_status(member):
272-
"""
273-
:type member: Channel.Member
274-
"""
275-
status = list(set(member.status))
276-
status.sort(key=attrgetter("level"), reverse=True)
277-
member.status = status
278-
279-
280296
def clean_user_data(user):
281297
"""
282298
:type user: User
@@ -612,21 +628,14 @@ def on_mode(chan, irc_paramlist, conn):
612628
user = get_users(conn).getuser(nick)
613629
memb = chan_data.get_member(user, create=True)
614630
status = statuses[status_char]
615-
memb_status = memb.status
616631
if change.adding:
617-
memb_status.append(status)
632+
memb.add_status(status, sort=False)
618633
to_sort[user.nick] = memb
619634
else:
620-
if status in memb_status:
621-
memb_status.remove(status)
622-
else:
623-
logger.debug(
624-
"[%s|chantrack] Attempt to remove status %s from user %s in channel %s",
625-
conn.name, status, user['nick'], chan
626-
)
635+
memb.remove_status(status)
627636

628637
for member in to_sort.values():
629-
sort_member_status(member)
638+
member.sort_status()
630639

631640

632641
@hook.irc_raw('PART')

0 commit comments

Comments
 (0)