feat: Add /masters command and 'мастера' text handlers
This commit is contained in:
parent
8e9e800ea8
commit
23f44e7679
1 changed files with 41 additions and 0 deletions
|
|
@ -116,6 +116,47 @@ async def cb_phones(event):
|
||||||
kb = get_phones_menu()
|
kb = get_phones_menu()
|
||||||
await safe_edit_or_reply(event, text, reply_markup=kb, parse_mode='HTML')
|
await safe_edit_or_reply(event, text, reply_markup=kb, parse_mode='HTML')
|
||||||
|
|
||||||
|
@router.message(Command('masters'))
|
||||||
|
@router.message(F.text.lower() == 'мастера')
|
||||||
|
async def cmd_masters(message: Message):
|
||||||
|
"""Выдача списка мастеров по команде /masters или тексту 'мастера'"""
|
||||||
|
from database.models import Service
|
||||||
|
from keyboards.inline import get_main_menu
|
||||||
|
from aiogram.types import FSInputFile
|
||||||
|
import os
|
||||||
|
|
||||||
|
user_id = message.from_user.id
|
||||||
|
async with AsyncSessionLocal() as session:
|
||||||
|
stmt = select(Service).where(Service.category == 'masters').order_by(Service.name)
|
||||||
|
services = list((await session.execute(stmt)).scalars().all())
|
||||||
|
|
||||||
|
user_stmt = select(User).where(User.user_id == user_id)
|
||||||
|
user = (await session.execute(user_stmt)).scalar_one_or_none()
|
||||||
|
ig_stmt = select(InitiativeGroup).where(InitiativeGroup.user_id == user_id, InitiativeGroup.is_active == True)
|
||||||
|
is_ig = (await session.execute(ig_stmt)).scalar_one_or_none() is not None
|
||||||
|
|
||||||
|
is_admin = user.is_admin or user_id == config.ADMIN_USER_ID if user else False
|
||||||
|
is_superadmin = user_id == config.ADMIN_USER_ID
|
||||||
|
verified = user.verified if user else False
|
||||||
|
menu_kb = get_main_menu(verified=verified, is_ig=is_ig, is_admin=is_admin, is_superadmin=is_superadmin)
|
||||||
|
|
||||||
|
if not services:
|
||||||
|
await message.answer("👷 Данные для этой категории еще не заполнены.", reply_markup=menu_kb, parse_mode='HTML')
|
||||||
|
return
|
||||||
|
|
||||||
|
text = "📞 <b>СПИСОК ТЕЛЕФОНОВ: МАСТЕРА</b>\n\n"
|
||||||
|
for s in services:
|
||||||
|
text += f"🔹 <b>{s.name}</b>\n └ 📱 <code>{s.phone}</code>\n"
|
||||||
|
if s.description:
|
||||||
|
text += f" └ 📝 <i>{s.description}</i>\n"
|
||||||
|
text += "\n"
|
||||||
|
|
||||||
|
photo_path = services[0].image_path if services[0].image_path else None
|
||||||
|
if photo_path and os.path.exists(photo_path):
|
||||||
|
await message.answer_photo(FSInputFile(photo_path), caption=text, reply_markup=menu_kb, parse_mode='HTML')
|
||||||
|
else:
|
||||||
|
await message.answer(text, reply_markup=menu_kb, parse_mode='HTML')
|
||||||
|
|
||||||
@router.message(F.text & ~F.text.startswith('/'))
|
@router.message(F.text & ~F.text.startswith('/'))
|
||||||
async def chat_with_ai(message: Message):
|
async def chat_with_ai(message: Message):
|
||||||
"""Обработка свободного общения с ИИ (только для верифицированных)"""
|
"""Обработка свободного общения с ИИ (только для верифицированных)"""
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue