From 2a2e95567b9b90d1be05246720019c2c575fdf6b 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 d30b91be2..e4b5d6cb4 100644 --- a/discord/audit_logs.py +++ b/discord/audit_logs.py @@ -666,12 +666,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) @@ -704,7 +703,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]: