From 75e99ca0712a2c09230e5c6f8d093dc526cc717d Mon Sep 17 00:00:00 2001 From: Tolmachev Igor Date: Mon, 20 Apr 2026 20:56:35 +0300 Subject: Add users command --- handlers/user/info.py | 4 ++-- handlers/user/invoices.py | 16 ++++++++-------- handlers/user/pay_invoice.py | 5 +++-- handlers/user/payments.py | 12 +++++------- 4 files changed, 18 insertions(+), 19 deletions(-) (limited to 'handlers/user') diff --git a/handlers/user/info.py b/handlers/user/info.py index 9776e7e..587925f 100644 --- a/handlers/user/info.py +++ b/handlers/user/info.py @@ -47,8 +47,8 @@ ADMIN_COMMANDS = COMMANDS + [ description="Создать новый счёт на оплату", ), BotCommand( - command="add_user", - description="Создать нового пользователя", + command="users", + description="Управление пользователями", ), BotCommand( command="suggest_list", diff --git a/handlers/user/invoices.py b/handlers/user/invoices.py index cc071bb..15785fb 100644 --- a/handlers/user/invoices.py +++ b/handlers/user/invoices.py @@ -18,7 +18,7 @@ from libs.invoice import ( get_payment_status, ) from libs.msg import eclipse_text -from libs.user import mention +from libs.user import load_user_cache from models import Invoice, PaymentStatus, User from models.callback_data import InvoiceItemClb, InvoicePageClb, PayInvoiceClb @@ -166,14 +166,14 @@ async def item( ] ) - await clb.message.edit_text(text_template.format("..."), reply_markup=reply_markup) user_status = [] for user_id, s in invoice_payments.user_status.items(): - chat = await bot.get_chat(user_id) - user_status.append(f"{PAYMENT_STATUS[s]} - {mention(chat)}") - await clb.message.edit_text( - text_template.format("\n".join(user_status)), - reply_markup=reply_markup, - ) + user_cache = await load_user_cache(bot, user_id) + user_status.append(f"{PAYMENT_STATUS[s]} - {user_cache.mention}") + + await clb.message.edit_text( + text_template.format("\n".join(user_status)), + reply_markup=reply_markup, + ) await clb.answer() diff --git a/handlers/user/pay_invoice.py b/handlers/user/pay_invoice.py index db75f47..d7809cd 100644 --- a/handlers/user/pay_invoice.py +++ b/handlers/user/pay_invoice.py @@ -19,7 +19,6 @@ from sqlalchemy import and_, select from sqlalchemy.ext.asyncio import AsyncSession from libs.fsm import get_data, set_data -from libs.user import mention from models import ( Invoice, Payment, @@ -27,6 +26,7 @@ from models import ( ReceiptFile, ReceiptFileType, User, + UserCache, UserRole, ) from models.callback_data import PayInvoiceClb, PaymentStatusClb @@ -112,6 +112,7 @@ async def receipt( bot: Bot, state: FSMContext, session: AsyncSession, + user_cache: UserCache, ) -> None: if msg.document is not None: receipt_file = ReceiptFile( @@ -173,7 +174,7 @@ async def receipt( try: await bot.send_message( admin_id, - f"Новое подтверждение оплаты:\nПользователь: {mention(msg.chat)}", + f"Новое подтверждение оплаты:\nПользователь: {user_cache.mention}", ) await receipt_file.send(bot, admin_id, reply_markup=reply_markup) except TelegramAPIError as e: diff --git a/handlers/user/payments.py b/handlers/user/payments.py index 87ea236..e15a882 100644 --- a/handlers/user/payments.py +++ b/handlers/user/payments.py @@ -15,13 +15,13 @@ from sqlalchemy.sql.functions import count from libs.invoice import get_payment_status from libs.msg import eclipse_text -from libs.user import mention +from libs.user import load_user_cache from models import Invoice, Payment, PaymentStatus, User from models.callback_data import ( + PayInvoiceClb, PaymentItemClb, PaymentPageClb, PaymentStatusClb, - PayInvoiceClb, ) router = Router(name="payments") @@ -213,7 +213,7 @@ async def item( invoice = await session.get(Invoice, payment.invoice_id) assert invoice is not None - chat = await bot.get_chat(payment.user_id) + user_cache = await load_user_cache(bot, payment.user_id) status_buttons = [] if payment.status != PaymentStatus.ACCEPTED: @@ -242,12 +242,10 @@ async def item( text="Назад к выбору", callback_data=PaymentPageClb(page=callback_data.page).pack(), ) - reply_markup = InlineKeyboardMarkup( - inline_keyboard=[status_buttons, [back_button]] - ) + reply_markup = InlineKeyboardMarkup(inline_keyboard=[status_buttons, [back_button]]) caption = ( - f"Платёж от {mention(chat)}\n" + f"Платёж от {user_cache.mention}\n" f"Счёт: {eclipse_text(invoice.message.text, 30)}\n" f"Дата: {payment.datetime.strftime('%d %b %y г.')}\n" f"Статус: {PAYMENT_STATUS[payment.status]}" -- cgit v1.3