From 9c905f22de4fa2e2f60ea9d473c14cb075a244e2 Mon Sep 17 00:00:00 2001 From: Tolmachev Igor Date: Thu, 26 Mar 2026 16:23:52 +0300 Subject: Add invoices command --- handlers/user/announcements.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'handlers/user/announcements.py') diff --git a/handlers/user/announcements.py b/handlers/user/announcements.py index 8f4aa43..dc85b54 100644 --- a/handlers/user/announcements.py +++ b/handlers/user/announcements.py @@ -16,11 +16,17 @@ router = Router(name="announcements") PAGE_SIZE = 5 -async def get_reply_markup(page: int, session: AsyncSession) -> InlineKeyboardMarkup: +async def get_reply_markup( + page: int, + session: AsyncSession, +) -> InlineKeyboardMarkup | None: total = await session.scalar(select(count()).select_from(Announcement)) assert total is not None total_pages = ceil(total / PAGE_SIZE) + if total == 0: + return None + page = max(0, min(page, total_pages - 1)) query = ( select(Announcement) @@ -64,10 +70,13 @@ async def get_reply_markup(page: int, session: AsyncSession) -> InlineKeyboardMa @router.message(Command("announcements")) async def command(msg: Message, bot: Bot, session: AsyncSession) -> None: - await msg.answer( - "Выберете анонс для просмотра.", - reply_markup=await get_reply_markup(0, session), - ) + reply_markup = await get_reply_markup(0, session) + + if reply_markup is None: + await msg.answer("Нету анонсов для просмотра.") + return + + await msg.answer("Выберете анонс для просмотра.", reply_markup=reply_markup) @router.callback_query(AnnouncePageClb.filter()) @@ -80,7 +89,7 @@ async def page( reply_markup = await get_reply_markup(callback_data.page, session) await clb.message.edit_text( - "Выберете анонс для просмотра.", + "Выберете анонс для просмотра:", reply_markup=reply_markup, ) -- cgit v1.3