From 097a4810264f40aa060bc63a5ccafffb6a53d0b5 Mon Sep 17 00:00:00 2001 From: Vlad Date: Sun, 1 Jun 2025 23:43:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=B2=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D1=8C=20=D0=B0=D0=B2=D1=82=D0=BE=D0=BC=D0=B0=D1=82?= =?UTF-8?q?=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=BE=D0=B3=D0=BE=20=D0=B2=D0=BE?= =?UTF-8?q?=D0=B7=D0=B2=D1=80=D0=B0=D1=82=D0=B0=20=D0=BF=D0=BB=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=B6=D0=B5=D0=B9=20=D0=B4=D0=BB=D1=8F=20=D0=B0=D0=B4?= =?UTF-8?q?=D0=BC=D0=B8=D0=BD=D0=B8=D1=81=D1=82=D1=80=D0=B0=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B0=20=D0=B2=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D1=87=D0=B8=D0=BA=D0=B0=D1=85=20=D1=83=D1=81=D0=BF=D0=B5?= =?UTF-8?q?=D1=88=D0=BD=D0=BE=D0=B9=20=D0=BE=D0=BF=D0=BB=D0=B0=D1=82=D1=8B?= =?UTF-8?q?.=20=D0=A2=D0=B5=D0=BF=D0=B5=D1=80=D1=8C,=20=D0=B5=D1=81=D0=BB?= =?UTF-8?q?=D0=B8=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=20=D1=8F=D0=B2=D0=BB=D1=8F=D0=B5=D1=82=D1=81?= =?UTF-8?q?=D1=8F=20=D0=B0=D0=B4=D0=BC=D0=B8=D0=BD=D0=B8=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D1=80=D0=BE=D0=BC,=20=D1=81=D0=B8=D1=81?= =?UTF-8?q?=D1=82=D0=B5=D0=BC=D0=B0=20=D0=B0=D0=B2=D1=82=D0=BE=D0=BC=D0=B0?= =?UTF-8?q?=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8=20=D0=B2=D0=BE=D0=B7?= =?UTF-8?q?=D0=B2=D1=80=D0=B0=D1=89=D0=B0=D0=B5=D1=82=20=D1=81=D1=80=D0=B5?= =?UTF-8?q?=D0=B4=D1=81=D1=82=D0=B2=D0=B0=20=D0=B8=20=D0=BE=D1=82=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=BB=D1=8F=D0=B5=D1=82=20=D1=83=D0=B2=D0=B5?= =?UTF-8?q?=D0=B4=D0=BE=D0=BC=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=20?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D1=82=D1=83=D1=81=D0=B5=20=D0=B2=D0=BE=D0=B7?= =?UTF-8?q?=D0=B2=D1=80=D0=B0=D1=82=D0=B0.=20=D0=A3=D0=BB=D1=83=D1=87?= =?UTF-8?q?=D1=88=D0=B5=D0=BD=D0=BE=20=D0=BB=D0=BE=D0=B3=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE?= =?UTF-8?q?=D0=BA=20=D0=B2=D0=BE=D0=B7=D0=B2=D1=80=D0=B0=D1=82=D0=B0=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D1=83=D0=BF=D1=80=D0=BE=D1=89=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BE=D1=82=D0=BB=D0=B0=D0=B4=D0=BA=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/main.py b/main.py index 42f664b..4de0c29 100644 --- a/main.py +++ b/main.py @@ -522,6 +522,30 @@ async def successful_payment_handler(message: Message, db: OracleDatabase = None plain_report = report.replace("**", "").replace("*", "") await message.answer(plain_report, reply_markup=builder.as_markup()) logging.info("Plain text message sent successfully!") + + # Проверяем, является ли пользователь администратором и возвращаем звезды + if message.from_user.id == ADMIN_USER_ID: + try: + await message.bot.refund_star_payment( + user_id=message.from_user.id, + telegram_payment_charge_id=message.successful_payment.telegram_payment_charge_id + ) + await message.answer( + "🔧 **Admin Refund**\n\n" + f"💰 Payment automatically refunded for admin user.\n" + f"🆔 Transaction ID: {escape_markdown(message.successful_payment.telegram_payment_charge_id)}\n" + "ℹ️ Admin access - no charges applied.", + parse_mode="Markdown" + ) + logging.info(f"Admin refund successful for user {message.from_user.id}") + except Exception as refund_error: + logging.error(f"Failed to refund admin payment: {refund_error}") + await message.answer( + "⚠️ **Admin Refund Failed**\n\n" + "Could not automatically refund admin payment. Please contact technical support.\n" + f"🆔 Transaction ID: {escape_markdown(message.successful_payment.telegram_payment_charge_id)}", + parse_mode="Markdown" + ) else: # No detailed information found - refund the payment try: @@ -689,6 +713,30 @@ async def successful_payment_handler(message: Message, db: OracleDatabase = None logging.info("Sending photo information message...") await message.answer(photo_message, parse_mode="Markdown") logging.info("Photo message sent successfully!") + + # Проверяем, является ли пользователь администратором и возвращаем звезды + if message.from_user.id == ADMIN_USER_ID: + try: + await message.bot.refund_star_payment( + user_id=message.from_user.id, + telegram_payment_charge_id=message.successful_payment.telegram_payment_charge_id + ) + await message.answer( + "🔧 **Admin Refund**\n\n" + f"💰 Payment automatically refunded for admin user.\n" + f"🆔 Transaction ID: {escape_markdown(message.successful_payment.telegram_payment_charge_id)}\n" + "ℹ️ Admin access - no charges applied.", + parse_mode="Markdown" + ) + logging.info(f"Admin refund successful for user {message.from_user.id}") + except Exception as refund_error: + logging.error(f"Failed to refund admin payment: {refund_error}") + await message.answer( + "⚠️ **Admin Refund Failed**\n\n" + "Could not automatically refund admin payment. Please contact technical support.\n" + f"🆔 Transaction ID: {escape_markdown(message.successful_payment.telegram_payment_charge_id)}", + parse_mode="Markdown" + ) else: # Нет записей - возвращаем деньги try: @@ -737,6 +785,30 @@ async def successful_payment_handler(message: Message, db: OracleDatabase = None f"✅ Payment successful! Thank you for your purchase.\n" f"Transaction ID: {message.successful_payment.telegram_payment_charge_id}" ) + + # Проверяем, является ли пользователь администратором и возвращаем звезды + if message.from_user.id == ADMIN_USER_ID: + try: + await message.bot.refund_star_payment( + user_id=message.from_user.id, + telegram_payment_charge_id=message.successful_payment.telegram_payment_charge_id + ) + await message.answer( + "🔧 **Admin Refund**\n\n" + f"💰 Payment automatically refunded for admin user.\n" + f"🆔 Transaction ID: {escape_markdown(message.successful_payment.telegram_payment_charge_id)}\n" + "ℹ️ Admin access - no charges applied.", + parse_mode="Markdown" + ) + logging.info(f"Admin refund successful for user {message.from_user.id}") + except Exception as refund_error: + logging.error(f"Failed to refund admin payment: {refund_error}") + await message.answer( + "⚠️ **Admin Refund Failed**\n\n" + "Could not automatically refund admin payment. Please contact technical support.\n" + f"🆔 Transaction ID: {escape_markdown(message.successful_payment.telegram_payment_charge_id)}", + parse_mode="Markdown" + ) async def on_startup():