58 lines
2.0 KiB
Python
58 lines
2.0 KiB
Python
import contextlib
|
|
import os
|
|
|
|
from aiogram import F, Router
|
|
from aiogram.filters import Command
|
|
from aiogram.fsm.context import FSMContext
|
|
from aiogram.types import CallbackQuery, FSInputFile, Message
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from config import WELCOME_VIDEO_NOTE_FP
|
|
from misc.kb.client import main_menu_kb
|
|
from repositories.order_items import OrderItemRepository
|
|
from repositories.users import create_user, get_user
|
|
from services.orders import OrderService
|
|
|
|
router = Router()
|
|
|
|
|
|
@router.message(Command("start"))
|
|
async def user_main_menu(
|
|
msg: Message,
|
|
state: FSMContext,
|
|
session: AsyncSession,
|
|
order_items_repo: OrderItemRepository,
|
|
):
|
|
await state.clear()
|
|
|
|
if not await get_user(session, msg.from_user.id):
|
|
if os.path.isfile(WELCOME_VIDEO_NOTE_FP):
|
|
await msg.bot.send_chat_action(msg.from_user.id, "record_video")
|
|
await msg.answer_video_note(FSInputFile(WELCOME_VIDEO_NOTE_FP))
|
|
await create_user(session, msg.from_user.id)
|
|
|
|
cart_items = await order_items_repo.get_items_count_by_customer(session, msg.from_user.id)
|
|
await msg.answer(
|
|
"<b>Добрый день!</b>\n" 'Нажмите "Каталог" чтобы выбрать товар или воспользуйтесь поиском.',
|
|
reply_markup=main_menu_kb(cart_items),
|
|
)
|
|
|
|
|
|
@router.callback_query(F.data.startswith("menu:"))
|
|
async def user_main_menu_cb(
|
|
cb: CallbackQuery,
|
|
state: FSMContext,
|
|
session: AsyncSession,
|
|
order_items_repo: OrderService,
|
|
):
|
|
await state.clear()
|
|
|
|
with contextlib.suppress(Exception):
|
|
await cb.message.reply_to_message.delete()
|
|
|
|
cart_items = await order_items_repo.get_items_count_by_customer(session, cb.from_user.id)
|
|
await cb.message.edit_text(
|
|
"<b>Добрый день!</b>\n" 'Нажмите "Каталог" чтобы выбрать товар или воспользуйтесь поиском.',
|
|
reply_markup=main_menu_kb(cart_items),
|
|
)
|