Compare commits

...
Sign in to create a new pull request.

2 commits

Author SHA1 Message Date
6498accdb3 feat: implement /new command for creating chats 2026-04-08 01:01:35 +03:00
b12c3faaea pyproject.toml supplemented 2026-04-08 01:00:25 +03:00
2 changed files with 32 additions and 0 deletions

View file

@ -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.")

View file

@ -37,3 +37,6 @@ target-version = "py311"
[tool.ruff.lint]
select = ["E", "F", "I", "UP", "B"]
[tool.setuptools]
packages = ["sdk", "core", "adapter"]