From fcf5be7efafe904a63f0bcdd72f0267c173e0153 Mon Sep 17 00:00:00 2001 From: Mikhail Putilovskij Date: Thu, 2 Apr 2026 14:21:03 +0300 Subject: [PATCH] =?UTF-8?q?fix(tg):=20remove=20close=5Fforum=5Ftopic=20fro?= =?UTF-8?q?m=20/archive=20=E2=80=94=20unsupported=20in=20Threaded=20Mode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- adapter/telegram/handlers/commands.py | 9 ++++----- tests/adapter/telegram/test_commands.py | 5 ++++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/adapter/telegram/handlers/commands.py b/adapter/telegram/handlers/commands.py index 3933826..0770ef6 100644 --- a/adapter/telegram/handlers/commands.py +++ b/adapter/telegram/handlers/commands.py @@ -49,12 +49,11 @@ async def cmd_archive(message: Message) -> None: if chat is None or chat["archived_at"] is not None: await message.answer("Этот чат не найден или уже архивирован.") return - try: - await message.bot.close_forum_topic(chat_id=message.chat.id, message_thread_id=thread_id) - except TelegramBadRequest as e: - logger.warning("cmd_archive_bot_error", error=str(e)) db.archive_chat(user_id=user_id, thread_id=thread_id) - await message.answer("Чат архивирован.") + await message.answer( + "Чат архивирован. Бот больше не будет отвечать в этом топике.\n" + "Топик останется в списке — это ограничение Telegram." + ) logger.info("cmd_archive", user_id=user_id, thread_id=thread_id) diff --git a/tests/adapter/telegram/test_commands.py b/tests/adapter/telegram/test_commands.py index 0d7d321..ff849df 100644 --- a/tests/adapter/telegram/test_commands.py +++ b/tests/adapter/telegram/test_commands.py @@ -53,8 +53,11 @@ async def test_cmd_archive_closes_and_archives(fresh_db, monkeypatch): fresh_db.create_chat(1, 42, "Чат #1") msg = make_message(user_id=1, thread_id=42, chat_id=100) await mod.cmd_archive(msg) - msg.bot.close_forum_topic.assert_called_once_with(chat_id=100, message_thread_id=42) + # close_forum_topic is NOT called — unsupported in Threaded Mode personal chats + msg.bot.close_forum_topic.assert_not_called() assert fresh_db.get_chat(1, 42)["archived_at"] is not None + msg.answer.assert_called_once() + assert "архивирован" in msg.answer.call_args[0][0] async def test_cmd_archive_unknown_topic_replies_error(fresh_db, monkeypatch):