From 3c25f826ea9f6db3618fda19c0f940219df6e88b Mon Sep 17 00:00:00 2001 From: chengyongru Date: Mon, 31 Aug 2026 18:14:20 +0800 Subject: [PATCH] fix(telegram): detect unsupported rich stream edits --- nanobot/channels/telegram/runtime.py | 8 +++++++- nanobot/channels/telegram/tests/test_telegram_channel.py | 5 ++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/nanobot/channels/telegram/runtime.py b/nanobot/channels/telegram/runtime.py index 090a38914..38429924a 100644 --- a/nanobot/channels/telegram/runtime.py +++ b/nanobot/channels/telegram/runtime.py @@ -938,7 +938,13 @@ class TelegramChannel(BaseChannel): # edit overwrite the already-successful rich result. self.logger.debug("Rich stream edit already applied for {}", chat_id) return True - if self._is_rich_capability_error(exc): + # Before Bot API 10.1, editMessageText ignores rich_message and + # reports the absent text argument instead. + pre_rich_edit_server = ( + bool(content) + and str(exc).strip().lower() == "message text is empty" + ) + if self._is_rich_capability_error(exc) or pre_rich_edit_server: self.logger.debug("editMessageText rich_message not available, disabling") self._rich_send_disabled = True return False diff --git a/nanobot/channels/telegram/tests/test_telegram_channel.py b/nanobot/channels/telegram/tests/test_telegram_channel.py index d4240c4f9..e91a19995 100644 --- a/nanobot/channels/telegram/tests/test_telegram_channel.py +++ b/nanobot/channels/telegram/tests/test_telegram_channel.py @@ -2777,7 +2777,10 @@ async def test_send_delta_stream_end_rich_capability_error_latches_and_falls_bac MessageBus(), ) _install_ready_app(channel) - channel._app.bot.do_api_request = AsyncMock(side_effect=BadRequest("Method not found")) + # Before Bot API 10.1, editMessageText ignores rich_message and requires text. + channel._app.bot.do_api_request = AsyncMock( + side_effect=BadRequest("Message text is empty") + ) channel._app.bot.edit_message_text = AsyncMock() channel._stream_bufs["123"] = _StreamBuf(text="hello", message_id=7, last_edit=0.0)