Skip to content

Commit 2f23f9f

Browse files
authored
fix: correctly handle message references (#1395)
* fix: use fallback if referenced_message is not given This prevents the result of fetch_referenced_message being None if there is a reply at times. * fix: catch and return none for fetch_referenced_message --------- Co-authored-by: Astrea49 <25420078+Astrea49@users.noreply.github.com>
1 parent e78b605 commit 2f23f9f

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

interactions/models/discord/message.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
import interactions.models as models
2020
from interactions.client.const import GUILD_WELCOME_MESSAGES, MISSING, Absent
21-
from interactions.client.errors import ThreadOutsideOfGuild
21+
from interactions.client.errors import ThreadOutsideOfGuild, NotFound
2222
from interactions.client.mixins.serialization import DictSerializationMixin
2323
from interactions.client.utils.attr_converters import optional as optional_c
2424
from interactions.client.utils.attr_converters import timestamp_converter
@@ -400,7 +400,11 @@ async def fetch_referenced_message(self, *, force: bool = False) -> Optional["Me
400400
"""
401401
if self._referenced_message_id is None:
402402
return None
403-
return await self._client.cache.fetch_message(self._channel_id, self._referenced_message_id, force=force)
403+
404+
try:
405+
return await self._client.cache.fetch_message(self._channel_id, self._referenced_message_id, force=force)
406+
except NotFound:
407+
return None
404408

405409
def get_referenced_message(self) -> Optional["Message"]:
406410
"""
@@ -492,6 +496,8 @@ def _process_dict(cls, data: dict, client: "Client") -> dict: # noqa: C901
492496
ref_message_data["guild_id"] = data.get("guild_id")
493497
_m = client.cache.place_message_data(ref_message_data)
494498
data["referenced_message_id"] = _m.id
499+
elif msg_reference := data.get("message_reference"):
500+
data["referenced_message_id"] = msg_reference["message_id"]
495501

496502
if "interaction" in data:
497503
data["interaction"] = MessageInteraction.from_dict(data["interaction"], client)

0 commit comments

Comments
 (0)