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.
This commit is contained in:
@@ -2480,7 +2480,7 @@ class DiscordAdapter(BasePlatformAdapter):
|
|||||||
if message.reference:
|
if message.reference:
|
||||||
reply_to_id = str(message.reference.message_id)
|
reply_to_id = str(message.reference.message_id)
|
||||||
if message.reference.resolved:
|
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(
|
event = MessageEvent(
|
||||||
text=event_text,
|
text=event_text,
|
||||||
|
|||||||
@@ -369,3 +369,16 @@ class TestReplyToText:
|
|||||||
event = reply_text_adapter.handle_message.await_args.args[0]
|
event = reply_text_adapter.handle_message.await_args.args[0]
|
||||||
assert event.reply_to_message_id == "555"
|
assert event.reply_to_message_id == "555"
|
||||||
assert event.reply_to_text is None
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user