diff --git a/handlers/admin/bans/bans_handler.py b/handlers/admin/bans/bans_handler.py index a4c4d7c7..055a0601 100644 --- a/handlers/admin/bans/bans_handler.py +++ b/handlers/admin/bans/bans_handler.py @@ -147,9 +147,11 @@ async def handle_delete_manual_banned(callback_query: CallbackQuery, session: As @router.callback_query(AdminPanelCallback.filter(F.action == "bans_preemptive"), IsAdminFilter()) async def handle_preemptive_ban_start(callback: CallbackQuery, state: FSMContext): await state.set_state(PreemptiveBanStates.waiting_for_preemptive_ids) + await callback.message.edit_text( "📥 Отправьте список Telegram ID (один на строке), которых нужно заранее забанить (теневой бан).\n\n" - "Пример:\n123456789\n987654321" + "Пример:\n123456789\n987654321", + reply_markup=build_admin_back_kb("bans") ) diff --git a/handlers/payments/gift.cpython-312-x86_64-linux-gnu.so b/handlers/payments/gift.cpython-312-x86_64-linux-gnu.so index 2e87eaaa..63fa01a0 100644 Binary files a/handlers/payments/gift.cpython-312-x86_64-linux-gnu.so and b/handlers/payments/gift.cpython-312-x86_64-linux-gnu.so differ diff --git a/handlers/payments/robokassa_pay.py b/handlers/payments/robokassa_pay.py index d337a3e2..7d90f284 100644 --- a/handlers/payments/robokassa_pay.py +++ b/handlers/payments/robokassa_pay.py @@ -11,6 +11,7 @@ from robokassa import HashAlgorithm, Robokassa from sqlalchemy.ext.asyncio import AsyncSession from datetime import datetime, timedelta from sqlalchemy import select, and_ +from pytz import timezone from config import ( ROBOKASSA_ENABLE, @@ -38,6 +39,8 @@ from logger import logger router = Router() +MOSCOW_TZ = timezone("Europe/Moscow") + class ReplenishBalanceState(StatesGroup): choosing_amount_robokassa = State() waiting_for_payment_confirmation_robokassa = State() @@ -213,7 +216,7 @@ async def robokassa_webhook(request: web.Request): logger.info(f"Processing payment for user {tg_id} with amount {amount}.") async with async_session_maker() as session: - recent_time = datetime.utcnow() - timedelta(minutes=1) + recent_time = datetime.now(MOSCOW_TZ).replace(tzinfo=None) - timedelta(minutes=1) result = await session.execute( select(Payment).where( diff --git a/handlers/payments/yookassa_pay.cpython-312-x86_64-linux-gnu.so b/handlers/payments/yookassa_pay.cpython-312-x86_64-linux-gnu.so index c26b61fc..2d39744b 100644 Binary files a/handlers/payments/yookassa_pay.cpython-312-x86_64-linux-gnu.so and b/handlers/payments/yookassa_pay.cpython-312-x86_64-linux-gnu.so differ diff --git a/handlers/start.py b/handlers/start.py index e509accb..3166d77b 100644 --- a/handlers/start.py +++ b/handlers/start.py @@ -209,13 +209,12 @@ async def process_start_logic( if "gift" in part: gift_raw = part.split("gift")[1].strip("_") - parts = gift_raw.split("_") - if len(parts) < 2: + + if not gift_raw: await message.answer("❌ Неверный формат ссылки на подарок.") return await process_callback_view_profile(message, state, admin, session) - gift_id = parts[0] - sender_id = parts[1] + gift_id = gift_raw if gift_id in processing_gifts: await message.answer("⏳ Подарок уже обрабатывается, подождите...") @@ -224,7 +223,7 @@ async def process_start_logic( processing_gifts.add(gift_id) try: - logger.info(f"[GIFT] Обнаружен подарок {gift_id} от {sender_id}") + logger.info(f"[GIFT] Обнаружен подарок {gift_id}") await handle_gift_link(gift_id, message, state, session, user_data=user_data) gift_detected = True finally: