Skip to content

Commit ceaffaf

Browse files
authored
update MessageReference
1 parent 901bdfe commit ceaffaf

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

discord/enums.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1059,6 +1059,13 @@ class PollLayoutType(Enum):
10591059
default = 1
10601060

10611061

1062+
class MessageReferenceType(Enum):
1063+
"""The message reference's type"""
1064+
1065+
default = 0
1066+
forward = 1
1067+
1068+
10621069
T = TypeVar("T")
10631070

10641071

discord/message.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
from .components import _component_factory
4646
from .embeds import Embed
4747
from .emoji import Emoji
48-
from .enums import ChannelType, MessageType, try_enum
48+
from .enums import ChannelType, MessageType, MessageReferenceType, try_enum
4949
from .errors import InvalidArgument
5050
from .file import File
5151
from .flags import AttachmentFlags, MessageFlags
@@ -477,6 +477,11 @@ class MessageReference:
477477
478478
Attributes
479479
----------
480+
type: Optional[:class:`MessageReferenceType`]
481+
The type of message reference. If this is not provided, assume default behavior.
482+
483+
.. versionadded:: 2.7
484+
480485
message_id: Optional[:class:`int`]
481486
The id of the message referenced.
482487
channel_id: :class:`int`
@@ -507,6 +512,7 @@ class MessageReference:
507512
"guild_id",
508513
"fail_if_not_exists",
509514
"resolved",
515+
"type",
510516
"_state",
511517
)
512518

@@ -517,9 +523,11 @@ def __init__(
517523
channel_id: int,
518524
guild_id: int | None = None,
519525
fail_if_not_exists: bool = True,
526+
type: MessageReferenceType | None = None
520527
):
521528
self._state: ConnectionState | None = None
522529
self.resolved: Message | DeletedReferencedMessage | None = None
530+
self.type: MessageReferenceType | None = type
523531
self.message_id: int | None = message_id
524532
self.channel_id: int = channel_id
525533
self.guild_id: int | None = guild_id
@@ -530,6 +538,7 @@ def with_state(
530538
cls: type[MR], state: ConnectionState, data: MessageReferencePayload
531539
) -> MR:
532540
self = cls.__new__(cls)
541+
self.type = try_enum(MessageReferenceType, data.get("type"))
533542
self.message_id = utils._get_as_snowflake(data, "message_id")
534543
self.channel_id = int(data.pop("channel_id"))
535544
self.guild_id = utils._get_as_snowflake(data, "guild_id")
@@ -540,7 +549,7 @@ def with_state(
540549

541550
@classmethod
542551
def from_message(
543-
cls: type[MR], message: Message, *, fail_if_not_exists: bool = True
552+
cls: type[MR], message: Message, *, fail_if_not_exists: bool = True, type: MessageReferenceType = None
544553
) -> MR:
545554
"""Creates a :class:`MessageReference` from an existing :class:`~discord.Message`.
546555
@@ -556,6 +565,11 @@ def from_message(
556565
557566
.. versionadded:: 1.7
558567
568+
type: Optional[:class:`MessageReferenceType`]
569+
The type of reference to create. Defaults to reply.
570+
571+
.. versionadded:: 2.7
572+
559573
Returns
560574
-------
561575
:class:`MessageReference`
@@ -566,6 +580,7 @@ def from_message(
566580
channel_id=message.channel.id,
567581
guild_id=getattr(message.guild, "id", None),
568582
fail_if_not_exists=fail_if_not_exists,
583+
type=type,
569584
)
570585
self._state = message._state
571586
return self

0 commit comments

Comments
 (0)