Files
shveitechbot/handlers/client.py

74 lines
2.0 KiB
Python

from aiogram import Router, F
from aiogram.types import CallbackQuery, Message
from aiogram.filters import Command
from aiogram.fsm.context import FSMContext
from sqlalchemy.ext.asyncio import AsyncSession
from misc.kb import main_menu_kb, render_category
from repositories.categories import CategoriesRepository
from services.categories import CategoryService
from services.orders import OrderService
router = Router()
@router.message(Command("start"))
async def main_menu(msg: Message, state: FSMContext):
await state.clear()
await msg.answer(
"hii!", reply_markup=await main_menu_kb(msg.from_user.id)
) # TODO: Write a welcome message
@router.callback_query(F.data.startswith("menu:"))
async def main_menu_cb(cb: CallbackQuery, state: FSMContext):
await state.clear()
await cb.message.edit_text(
"hii!", reply_markup=await main_menu_kb(cb.from_user.id)
) # TODO: Write a welcome message
@router.message(Command("orders"))
async def get_orders(
msg: Message,
state: FSMContext,
order_service: OrderService,
session: AsyncSession,
):
await state.clear()
count = await order_service.get_order_count(session, msg.from_user.id)
await msg.answer(f"you have {count} orders.")
@router.callback_query(F.data.startswith("cat:"))
async def subcatalogue(
cb: CallbackQuery,
state: FSMContext,
category_service: CategoryService,
session: AsyncSession,
categories_repo: CategoriesRepository,
):
await state.clear()
cat_id = cb.data.split(":")[1]
if cat_id == "root":
children = await category_service.get_children(session)
kb = await render_category(children, show_menu=True)
else:
cat_id = int(cat_id)
children = await category_service.get_children(session, cat_id)
category = await categories_repo.get_category_by_id(session, cat_id)
parent_id = category.parent_id or "root"
kb = await render_category(children, parent_id)
await cb.message.edit_text(
"category selection",
reply_markup=kb,
)