From cb6170a7247958294b85a3bd0ab29b71088e86a2 Mon Sep 17 00:00:00 2001 From: Rapptz Date: Tue, 18 Apr 2023 06:14:49 -0400 Subject: [PATCH] Fix AuditLogEntry.target being None for invites Fix #9336 --- discord/audit_logs.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/discord/audit_logs.py b/discord/audit_logs.py index 489e064b7..17f308c45 100644 --- a/discord/audit_logs.py +++ b/discord/audit_logs.py @@ -733,12 +733,11 @@ class AuditLogEntry(Hashable): if self.action.target_type is None: return None - if self._target_id is None: - return None - try: converter = getattr(self, '_convert_target_' + self.action.target_type) except AttributeError: + if self._target_id is None: + return None return Object(id=self._target_id) else: return converter(self._target_id) @@ -771,7 +770,12 @@ class AuditLogEntry(Hashable): def _convert_target_channel(self, target_id: int) -> Union[abc.GuildChannel, Object]: return self.guild.get_channel(target_id) or Object(id=target_id) - def _convert_target_user(self, target_id: int) -> Union[Member, User, Object]: + def _convert_target_user(self, target_id: Optional[int]) -> Optional[Union[Member, User, Object]]: + # For some reason the member_disconnect and member_move action types + # do not have a non-null target_id so safeguard against that + if target_id is None: + return None + return self._get_member(target_id) or Object(id=target_id, type=Member) def _convert_target_role(self, target_id: int) -> Union[Role, Object]: