Skip to content

Commit 31e278a

Browse files
committed
feat(message): Add data model for message.interaction
Signed-off-by: Mathieu Corsham <[email protected]>
1 parent e317ce9 commit 31e278a

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

discord/message.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444
from typing_extensions import Self
4545

4646
from . import utils
47-
from .channel import ThreadChannel
4847
from .reaction import Reaction
4948
from .emoji import Emoji
5049
from .partial_emoji import PartialEmoji
@@ -83,6 +82,7 @@
8382

8483
__all__ = (
8584
'Attachment',
85+
'MessageInteraction',
8686
'Message',
8787
'PartialMessage',
8888
'MessageReference',
@@ -641,6 +641,8 @@ class Message(Hashable):
641641
A list of stickers given to the message.
642642
643643
.. versionadded:: 1.6
644+
interaction: Optional[:class:`MessageInteraction`]
645+
The interaction associated with this message if any.
644646
"""
645647

646648
__slots__ = ('_edited_timestamp', 'tts', 'content', 'channel', 'webhook_id',
@@ -661,6 +663,8 @@ def __init__(self, *, state: ConnectionState, channel, data: MessagePayload):
661663
self.components: List[ActionRow] = [ActionRow.from_dict(d) for d in data.get('components', [])]
662664
self.application = data.get('application') # TODO: make this a class
663665
self.activity = data.get('activity') # TODO: make this a class
666+
interaction = data.get('interaction')
667+
self.interaction: Optional[MessageInteraction] = MessageInteraction(state=state, data=data) if interaction else None
664668
self.channel: Messageable = channel
665669
self._edited_timestamp: datetime = utils.parse_time(data['edited_timestamp'])
666670
self.type: MessageType = try_enum(MessageType, data['type'])
@@ -693,7 +697,7 @@ def __init__(self, *, state: ConnectionState, channel, data: MessagePayload):
693697

694698
ref.resolved = self.__class__(channel=chan, data=resolved, state=state)
695699

696-
for handler in ('author', 'member', 'mentions', 'mention_roles', 'flags', 'interaction', 'thread'):
700+
for handler in ('author', 'member', 'mentions', 'mention_roles', 'flags', 'thread'):
697701
try:
698702
getattr(self, '_handle_%s' % handler)(data[handler])
699703
except KeyError:
@@ -816,7 +820,7 @@ def _handle_embeds(self, value):
816820
self.embeds: List[Embed] = [Embed.from_dict(data) for data in value]
817821

818822
def _handle_interaction(self, value):
819-
self.interaction = value # TODO: implement interaction-model for message
823+
self.interaction = MessageInteraction(state=self._state, data=value)
820824

821825
def _handle_thread(self, value):
822826
thread = self.guild.get_channel(self.id)

docs/api.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3259,6 +3259,11 @@ Message
32593259
.. autoclass:: EphemeralMessage()
32603260
:members:
32613261

3262+
.. attributetable:: MessageInteraction
3263+
3264+
.. autoclass:: MessageInteraction()
3265+
:members:
3266+
32623267
DeletedReferencedMessage
32633268
~~~~~~~~~~~~~~~~~~~~~~~~~
32643269

0 commit comments

Comments
 (0)