Skip to content

Commit 158eb32

Browse files
hharry11teknium1
authored andcommitted
fix(gateway): preserve document type when merging queued events
1 parent adaee2c commit 158eb32

2 files changed

Lines changed: 38 additions & 0 deletions

File tree

gateway/platforms/base.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1034,6 +1034,11 @@ def merge_pending_message_event(
10341034
existing.text = event.text
10351035
if existing_is_photo or incoming_is_photo:
10361036
existing.message_type = MessageType.PHOTO
1037+
elif (
1038+
getattr(existing, "message_type", None) == MessageType.TEXT
1039+
and event.message_type != MessageType.TEXT
1040+
):
1041+
existing.message_type = event.message_type
10371042
return
10381043

10391044
if (

tests/gateway/test_session_race_guard.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,39 @@ def test_merge_pending_message_event_merges_text_and_photo_followups():
226226
assert merged.media_types == ["image/png"]
227227

228228

229+
def test_merge_pending_message_event_promotes_document_followups_over_text():
230+
pending = {}
231+
source = SessionSource(
232+
platform=Platform.TELEGRAM,
233+
chat_id="12345",
234+
chat_type="dm",
235+
user_id="u1",
236+
)
237+
session_key = build_session_key(source)
238+
239+
text_event = MessageEvent(
240+
text="please review this",
241+
message_type=MessageType.TEXT,
242+
source=source,
243+
)
244+
document_event = MessageEvent(
245+
text="",
246+
message_type=MessageType.DOCUMENT,
247+
source=source,
248+
media_urls=["/tmp/report.pdf"],
249+
media_types=["application/pdf"],
250+
)
251+
252+
merge_pending_message_event(pending, session_key, text_event, merge_text=True)
253+
merge_pending_message_event(pending, session_key, document_event, merge_text=True)
254+
255+
merged = pending[session_key]
256+
assert merged.message_type == MessageType.DOCUMENT
257+
assert merged.text == "please review this"
258+
assert merged.media_urls == ["/tmp/report.pdf"]
259+
assert merged.media_types == ["application/pdf"]
260+
261+
229262
@pytest.mark.asyncio
230263
async def test_recent_telegram_text_followup_is_queued_without_interrupt():
231264
runner = _make_runner()

0 commit comments

Comments
 (0)