From 6498accdb3ab150309ed1520ec7daab573c7f13a Mon Sep 17 00:00:00 2001 From: Dinar Date: Wed, 8 Apr 2026 01:01:35 +0300 Subject: [PATCH] feat: implement /new command for creating chats --- adapter/telegram/handlers/commands.py | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/adapter/telegram/handlers/commands.py b/adapter/telegram/handlers/commands.py index 5a72836..e2e3d1a 100644 --- a/adapter/telegram/handlers/commands.py +++ b/adapter/telegram/handlers/commands.py @@ -95,3 +95,32 @@ async def cmd_rename(message: Message) -> None: async def cmd_settings(message: Message) -> None: """Open settings menu.""" await message.answer("⚙️ Настройки", reply_markup=settings_main_keyboard()) + + +# В существующий router добавить: +@router.message(Command("new")) +async def cmd_new(message: Message) -> None: + """Create a new topic/chat for the user.""" + user_id = message.from_user.id + chat_id = message.chat.id + + # Проверка лимита чатов (например, макс. 5 активных) + active_count = db.count_active_chats(user_id) + if active_count >= 5: + await message.answer("🔒 Максимум 5 активных чатов. Архивируйте старый через /archive") + return + + # Создаём топик и регистрируем в БД + topic_name = f"Чат #{active_count + 2}" + try: + topic = await message.bot.create_forum_topic(chat_id=chat_id, name=topic_name) + db.create_chat(user_id=user_id, thread_id=topic.message_thread_id, chat_name=topic_name) + logger.info("new_chat_created", user_id=user_id, thread_id=topic.message_thread_id) + + await message.answer( + f"✅ Создан {topic_name}. Пишите сюда — контекст будет изолирован.", + message_thread_id=topic.message_thread_id, + ) + except TelegramBadRequest as e: + logger.warning("new_topic_failed", error=str(e)) + await message.answer("Не удалось создать топик. Проверьте настройки бота в @BotFather.") \ No newline at end of file