feat: implement /new command for creating chats
This commit is contained in:
parent
b12c3faaea
commit
6498accdb3
1 changed files with 29 additions and 0 deletions
|
|
@ -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.")
|
||||
Loading…
Add table
Add a link
Reference in a new issue