Skip to content

Commit f15100b

Browse files
committed
fix(message): Fix a KeyError in message.interaction caused by passing the message data instead of the interaction value
Signed-off-by: Mathieu Corsham <[email protected]>
1 parent 31e278a commit f15100b

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

discord/message.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -361,13 +361,18 @@ class MessageInteraction:
361361
user: :class:`User`
362362
The user who invoked the interaction.
363363
"""
364-
def __init__(self, state: ConnectionState, data: MessageInteractionPayload):
364+
def __init__(self, state: ConnectionState, data: MessageInteractionPayload, guild: Optional[Guild] = None) -> None:
365365
self._state: ConnectionState = state
366366
self.id: int = int(data['id'])
367367
self.type: InteractionType = try_enum(InteractionType, data['type'])
368-
self.name: str = data['name']
368+
self.name: Optional[str] = data['name']
369369
self.user: User = state.store_user(data['user'])
370-
self.partial_member: Optional[PartialMemberPayload] = data.get('member', None) # TODO: Use a model for this
370+
try:
371+
member = data['member']
372+
except KeyError:
373+
self.member: Optional[Member] = None
374+
else:
375+
self.member: Optional[Member] = guild.get_member(self.user.id) or Member(data=member, state=state, guild=guild)
371376

372377
def __repr__(self) -> str:
373378
return f'<MessageInteraction command={self.name} user={self.user} interaction_id={self.id}>'
@@ -664,7 +669,11 @@ def __init__(self, *, state: ConnectionState, channel, data: MessagePayload):
664669
self.application = data.get('application') # TODO: make this a class
665670
self.activity = data.get('activity') # TODO: make this a class
666671
interaction = data.get('interaction')
667-
self.interaction: Optional[MessageInteraction] = MessageInteraction(state=state, data=data) if interaction else None
672+
self.interaction: Optional[MessageInteraction] = MessageInteraction(
673+
state=state,
674+
data=interaction,
675+
guild=self.guild
676+
) if interaction else None
668677
self.channel: Messageable = channel
669678
self._edited_timestamp: datetime = utils.parse_time(data['edited_timestamp'])
670679
self.type: MessageType = try_enum(MessageType, data['type'])

0 commit comments

Comments
 (0)