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):