Skip to content

Commit 1fc6a34

Browse files
committed
fix(interaction): Fix interaction.callback_message not being set, when using interaction.respond
Signed-off-by: Mathieu Corsham <[email protected]>
1 parent dd17add commit 1fc6a34

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

discord/interactions.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -481,15 +481,26 @@ def __init__(self, state: ConnectionState, data: InteractionPayload) -> None:
481481
self.deferred: bool = False
482482
self.deferred_hidden: bool = False
483483
self.deferred_modal: bool = False
484-
self.callback_message: Optional[Message] = None
485484
self._command = None
486485
self._component = None
487-
self.messages: Optional[Dict[int, Union[Message, EphemeralMessage]]] = {}
486+
self._callback_message: Optional[Union[Message, EphemeralMessage]] = None
487+
self.messages: Optional[Dict[Union[str, int], Union[Message, EphemeralMessage]]] = {}
488488

489489
def __repr__(self) -> str:
490490
"""Represents a :class:`~discord.BaseInteraction` object."""
491491
return f'<{self.__class__.__name__} {", ".join(["%s=%s" % (k, v) for k, v in self.__dict__.items() if k[0] != "_"])}>'
492-
492+
493+
@property
494+
def callback_message(self) -> Optional[Union[Message, EphemeralMessage]]:
495+
"""Optional[Union[:class:`Message`, :class:`EphemeralMessage`]: The initial interaction response message,if any. (``@original``)"""
496+
return self._callback_message
497+
498+
@callback_message.setter
499+
def callback_message(self, value: Optional[Union[Message, EphemeralMessage]]) -> None:
500+
self._callback_message = value
501+
if value:
502+
self.messages['@original'] = value
503+
493504
async def _defer(
494505
self,
495506
response_type: Optional[InteractionCallbackType] = InteractionCallbackType.deferred_update_msg,
@@ -863,14 +874,15 @@ async def respond(
863874
else:
864875
msg = Message(state=self._state, channel=self.channel, data=data)
865876

877+
878+
if not self.callback_message or is_initial:
879+
self.callback_message = msg
880+
else:
881+
self.messages[msg.id] = msg
866882
if response_type is not MISSING or is_initial:
867883
self.deferred = True
868884
if is_hidden:
869885
self.deferred_hidden = True
870-
if not self.callback_message and not self.deferred:
871-
self.callback_message = msg
872-
else:
873-
self.messages[msg.id] = msg
874886
if delete_after is not None:
875887
await msg.delete(delay=delete_after)
876888
return msg

0 commit comments

Comments
 (0)