d.py 2.3 / pomelo changes (#6130)

Co-authored-by: Michael Oliveira <34169552+Flame442@users.noreply.github.com>
This commit is contained in:
Jakub Kuczys
2023-06-14 04:56:50 +02:00
committed by GitHub
parent 3abf4cac05
commit 10e09d6abc
20 changed files with 216 additions and 173 deletions

View File

@@ -1,6 +1,7 @@
import logging
from datetime import timezone
from collections import defaultdict, deque
from typing import List, Optional
import discord
from redbot.core import i18n, modlog, commands
@@ -158,6 +159,17 @@ class Events(MixinMeta):
if not deleted:
await self.check_mention_spam(message)
@staticmethod
def _update_past_names(name: str, name_list: List[Optional[str]]) -> None:
while None in name_list: # clean out null entries from a bug
name_list.remove(None)
if name in name_list:
# Ensure order is maintained without duplicates occurring
name_list.remove(name)
name_list.append(name)
while len(name_list) > 20:
name_list.pop(0)
@commands.Cog.listener()
async def on_user_update(self, before: discord.User, after: discord.User):
if before.name != after.name:
@@ -165,14 +177,13 @@ class Events(MixinMeta):
if not track_all_names:
return
async with self.config.user(before).past_names() as name_list:
while None in name_list: # clean out null entries from a bug
name_list.remove(None)
if before.name in name_list:
# Ensure order is maintained without duplicates occurring
name_list.remove(before.name)
name_list.append(before.name)
while len(name_list) > 20:
name_list.pop(0)
self._update_past_names(before.name, name_list)
if before.display_name != after.display_name:
track_all_names = await self.config.track_all_names()
if not track_all_names:
return
async with self.config.user(before).past_display_names() as name_list:
self._update_past_names(before.display_name, name_list)
@commands.Cog.listener()
async def on_member_update(self, before: discord.Member, after: discord.Member):
@@ -185,10 +196,4 @@ class Events(MixinMeta):
if (not track_all_names) or (not track_nicknames):
return
async with self.config.member(before).past_nicks() as nick_list:
while None in nick_list: # clean out null entries from a bug
nick_list.remove(None)
if before.nick in nick_list:
nick_list.remove(before.nick)
nick_list.append(before.nick)
while len(nick_list) > 20:
nick_list.pop(0)
self._update_past_names(before.nick, nick_list)