[V3 Mod] Userinfo past nicks/names (#1865)

* [V3 Mod] Userinfo past nicks/names

Prevents trying to do a string replace on a NoneType

* address root cause as well

* remove extra whitespace that got pasted in from web editor
This commit is contained in:
Michael H 2018-06-20 13:49:01 -04:00 committed by Kowlin
parent b456c6ad3b
commit d23620727e

View File

@ -1362,9 +1362,9 @@ class Mod:
names = await self.settings.user(user).past_names() names = await self.settings.user(user).past_names()
nicks = await self.settings.member(user).past_nicks() nicks = await self.settings.member(user).past_nicks()
if names: if names:
names = [escape(name, mass_mentions=True) for name in names] names = [escape(name, mass_mentions=True) for name in names if name]
if nicks: if nicks:
nicks = [escape(nick, mass_mentions=True) for nick in nicks] nicks = [escape(nick, mass_mentions=True) for nick in nicks if nick]
return names, nicks return names, nicks
async def check_tempban_expirations(self): async def check_tempban_expirations(self):
@ -1602,18 +1602,22 @@ class Mod:
if entry.target == target: if entry.target == target:
return entry return entry
async def on_member_update(self, before, after): async def on_member_update(self, before: discord.Member, after: discord.Member):
if before.name != after.name: if before.name != after.name:
async with self.settings.user(before).past_names() as name_list: async with self.settings.user(before).past_names() as name_list:
if after.nick in name_list: while None in name_list: # clean out null entries from a bug
name_list.remove(None)
if after.name in name_list:
# Ensure order is maintained without duplicates occuring # Ensure order is maintained without duplicates occuring
name_list.remove(after.nick) name_list.remove(after.name)
name_list.append(after.nick) name_list.append(after.name)
while len(name_list) > 20: while len(name_list) > 20:
name_list.pop(0) name_list.pop(0)
if before.nick != after.nick and after.nick is not None: if before.nick != after.nick and after.nick is not None:
async with self.settings.member(before).past_nicks() as nick_list: async with self.settings.member(before).past_nicks() as nick_list:
while None in nick_list: # clean out null entries from a bug
nick_list.remove(None)
if after.nick in nick_list: if after.nick in nick_list:
nick_list.remove(after.nick) nick_list.remove(after.nick)
nick_list.append(after.nick) nick_list.append(after.nick)