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( "Добрый день!\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( "Добрый день!\n" 'Нажмите "Каталог" чтобы выбрать товар или воспользуйтесь поиском.', reply_markup=main_menu_kb(cart_items), )