[ModLog] Keep last known username in case's data (#3674)

This commit is contained in:
jack1142 2020-03-28 01:34:40 +01:00 committed by GitHub
parent 6e91ebeb3d
commit ed267d17f2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -214,12 +214,14 @@ class Case:
amended_by: Optional[discord.User] = None, amended_by: Optional[discord.User] = None,
modified_at: Optional[int] = None, modified_at: Optional[int] = None,
message: Optional[discord.Message] = None, message: Optional[discord.Message] = None,
last_known_username: Optional[str] = None,
): ):
self.bot = bot self.bot = bot
self.guild = guild self.guild = guild
self.created_at = created_at self.created_at = created_at
self.action_type = action_type self.action_type = action_type
self.user = user self.user = user
self.last_known_username = last_known_username
self.moderator = moderator self.moderator = moderator
self.reason = reason self.reason = reason
self.until = until self.until = until
@ -241,10 +243,16 @@ class Case:
""" """
# We don't want case_number to be changed # We don't want case_number to be changed
data.pop("case_number", None) data.pop("case_number", None)
# last username is set based on passed user object
data.pop("last_known_username", None)
for item in list(data.keys()): for item in list(data.keys()):
setattr(self, item, data[item]) setattr(self, item, data[item])
# update last known username
if not isinstance(self.user, int):
self.last_known_username = f"{self.user.name}#{self.user.discriminator}"
await _conf.custom(_CASES, str(self.guild.id), str(self.case_number)).set(self.to_json()) await _conf.custom(_CASES, str(self.guild.id), str(self.case_number)).set(self.to_json())
self.bot.dispatch("modlog_case_edit", self) self.bot.dispatch("modlog_case_edit", self)
if not self.message: if not self.message:
@ -314,7 +322,10 @@ class Case:
) )
if isinstance(self.user, int): if isinstance(self.user, int):
if self.last_known_username is None:
user = f"[Unknown or Deleted User] ({self.user})" user = f"[Unknown or Deleted User] ({self.user})"
else:
user = f"{self.last_known_username} ({self.user})"
avatar_url = None avatar_url = None
else: else:
user = escape_spoilers( user = escape_spoilers(
@ -384,6 +395,7 @@ class Case:
"guild": self.guild.id, "guild": self.guild.id,
"created_at": self.created_at, "created_at": self.created_at,
"user": user_id, "user": user_id,
"last_known_username": self.last_known_username,
"moderator": mod, "moderator": mod,
"reason": self.reason, "reason": self.reason,
"until": self.until, "until": self.until,
@ -472,6 +484,7 @@ class Case:
channel=channel, channel=channel,
modified_at=data["modified_at"], modified_at=data["modified_at"],
message=message, message=message,
last_known_username=data.get("last_known_username"),
**user_objects, **user_objects,
) )