From b12c3faaea2fd595c820c67a06ef3af97a62ab3b Mon Sep 17 00:00:00 2001 From: Dinar Date: Wed, 8 Apr 2026 01:00:25 +0300 Subject: [PATCH 1/2] pyproject.toml supplemented --- pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 8f4978b..1f466df 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,3 +37,6 @@ target-version = "py311" [tool.ruff.lint] select = ["E", "F", "I", "UP", "B"] + +[tool.setuptools] +packages = ["sdk", "core", "adapter"] \ No newline at end of file From 6498accdb3ab150309ed1520ec7daab573c7f13a Mon Sep 17 00:00:00 2001 From: Dinar Date: Wed, 8 Apr 2026 01:01:35 +0300 Subject: [PATCH 2/2] 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