fix(telegram): keep DM topic typing scoped

This commit is contained in:
helix4u 2026-05-05 13:36:33 -06:00 committed by Teknium
parent 0664bf961a
commit 41545f7ec5
2 changed files with 25 additions and 5 deletions

View file

@ -2516,11 +2516,12 @@ class TelegramAdapter(BasePlatformAdapter):
)
except Exception as e:
if message_thread_id is not None and self._is_thread_not_found_error(e):
await self._bot.send_chat_action(
chat_id=int(chat_id),
action="typing",
message_thread_id=None,
)
if str(_typing_thread) == self._GENERAL_TOPIC_THREAD_ID:
await self._bot.send_chat_action(
chat_id=int(chat_id),
action="typing",
message_thread_id=None,
)
else:
raise
except Exception as e:

View file

@ -179,6 +179,25 @@ async def test_send_typing_retries_without_general_thread_when_not_found():
]
@pytest.mark.asyncio
async def test_send_typing_does_not_fall_back_to_root_for_dm_topic():
"""Typing failures in DM topics should not show an indicator in All Messages."""
adapter = _make_adapter()
call_log = []
async def mock_send_chat_action(**kwargs):
call_log.append(dict(kwargs))
raise FakeBadRequest("Message thread not found")
adapter._bot = SimpleNamespace(send_chat_action=mock_send_chat_action)
await adapter.send_typing("12345", metadata={"thread_id": "22182"})
assert call_log == [
{"chat_id": 12345, "action": "typing", "message_thread_id": 22182},
]
@pytest.mark.asyncio
async def test_send_retries_without_thread_on_thread_not_found():
"""When message_thread_id causes 'thread not found', retry without it."""