Compare commits
2 commits
main
...
feature/di
| Author | SHA1 | Date | |
|---|---|---|---|
| 6498accdb3 | |||
| b12c3faaea |
2 changed files with 32 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.")
|
||||||
|
|
@ -37,3 +37,6 @@ target-version = "py311"
|
||||||
|
|
||||||
[tool.ruff.lint]
|
[tool.ruff.lint]
|
||||||
select = ["E", "F", "I", "UP", "B"]
|
select = ["E", "F", "I", "UP", "B"]
|
||||||
|
|
||||||
|
[tool.setuptools]
|
||||||
|
packages = ["sdk", "core", "adapter"]
|
||||||
Loading…
Add table
Add a link
Reference in a new issue