From 8ea9ceb44c570a29b23b60dc83953ccacc090f4d Mon Sep 17 00:00:00 2001 From: Teknium Date: Tue, 14 Apr 2026 10:16:35 -0700 Subject: [PATCH] fix: guard reply_to_text against DeletedReferencedMessage Use getattr() for resolved.content since discord.py's DeletedReferencedMessage lacks a content attribute. Adds test for the deleted-message edge case. --- gateway/platforms/discord.py | 2 +- tests/gateway/test_discord_reply_mode.py | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/gateway/platforms/discord.py b/gateway/platforms/discord.py index ca7e9e416..0adee9eb6 100644 --- a/gateway/platforms/discord.py +++ b/gateway/platforms/discord.py @@ -2480,7 +2480,7 @@ class DiscordAdapter(BasePlatformAdapter): if message.reference: reply_to_id = str(message.reference.message_id) if message.reference.resolved: - reply_to_text = message.reference.resolved.content or None + reply_to_text = getattr(message.reference.resolved, "content", None) or None event = MessageEvent( text=event_text, diff --git a/tests/gateway/test_discord_reply_mode.py b/tests/gateway/test_discord_reply_mode.py index 47cc93c5c..8a3b440bb 100644 --- a/tests/gateway/test_discord_reply_mode.py +++ b/tests/gateway/test_discord_reply_mode.py @@ -369,3 +369,16 @@ class TestReplyToText: event = reply_text_adapter.handle_message.await_args.args[0] assert event.reply_to_message_id == "555" assert event.reply_to_text is None + + @pytest.mark.asyncio + async def test_reference_with_deleted_message(self, reply_text_adapter): + """Deleted messages lack .content — getattr guard should return None.""" + resolved_deleted = SimpleNamespace(id=555) + ref = SimpleNamespace(message_id=555, resolved=resolved_deleted) + message = _make_message(reference=ref) + + await reply_text_adapter._handle_message(message) + + event = reply_text_adapter.handle_message.await_args.args[0] + assert event.reply_to_message_id == "555" + assert event.reply_to_text is None