feat: implement /new command for creating chats

This commit is contained in:
Dinar 2026-04-08 01:01:35 +03:00
parent b12c3faaea
commit 6498accdb3

View file

@ -95,3 +95,32 @@ async def cmd_rename(message: Message) -> None:
async def cmd_settings(message: Message) -> None: async def cmd_settings(message: Message) -> None:
"""Open settings menu.""" """Open settings menu."""
await message.answer("⚙️ Настройки", reply_markup=settings_main_keyboard()) 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.")