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:
|
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.")
|
||||||
Loading…
Add table
Add a link
Reference in a new issue