From 48e981c7c6a1e9790cbee655fb869199fe0d323e Mon Sep 17 00:00:00 2001 From: Vladless Date: Thu, 12 Feb 2026 00:53:38 +0300 Subject: [PATCH] database optimization/ back button in the configurator/ query competition and more --- core/bootstrap.py | 4 ++ database/coupons.py | 2 + database/db.py | 32 +++++++++- database/gifts.py | 2 +- database/importer.py | 10 +-- database/init_db.py | 3 - database/keys.py | 6 +- database/notifications.py | 3 + database/payments.py | 2 + database/referrals.py | 1 + database/servers.py | 4 ++ database/tariffs.py | 4 ++ database/temporary_data.py | 1 + database/tracking_sources.py | 1 + database/users.py | 4 +- filters/admin.py | 48 +++++++++++--- handlers/fallback_router.py | 27 ++++---- handlers/keys/key_create.py | 56 +++++++++++++++++ handlers/payments/heleket/handlers.py | 2 +- handlers/payments/heleket/service.py | 24 +++++-- handlers/payments/kassai/handlers.py | 2 +- handlers/payments/kassai/service.py | 26 ++++++-- .../service.cpython-312-x86_64-linux-gnu.so | Bin 331528 -> 339720 bytes handlers/profile.py | 45 +++++-------- handlers/tariffs/addons/key_addons_pack.py | 1 - handlers/tariffs/buy/key_tariffs.py | 27 +++----- middlewares/__init__.py | 2 + middlewares/answer.py | 12 +++- middlewares/concurrency.py | 59 ++++++++++++++++++ middlewares/session.py | 20 ++++-- utils/custom_emojis.py | 3 +- utils/errors.py | 29 ++++++--- 32 files changed, 351 insertions(+), 111 deletions(-) create mode 100644 middlewares/concurrency.py diff --git a/core/bootstrap.py b/core/bootstrap.py index e68d98b0..bf1af583 100644 --- a/core/bootstrap.py +++ b/core/bootstrap.py @@ -1,4 +1,6 @@ from database import async_session_maker +from database.db import warm_pool +from database.tariffs import initialize_all_tariff_weights from .settings.buttons_config import BUTTONS_CONFIG, load_buttons_config, update_buttons_config from .settings.management_config import MANAGEMENT_CONFIG, load_management_config, update_management_config @@ -11,7 +13,9 @@ from .settings.tariffs_config import TARIFFS_CONFIG, load_tariffs_config, update async def bootstrap() -> None: + await warm_pool() async with async_session_maker() as session: + await initialize_all_tariff_weights(session) await load_buttons_config(session) await load_notifications_config(session) await load_modes_config(session) diff --git a/database/coupons.py b/database/coupons.py index 681a78b3..322de6e5 100644 --- a/database/coupons.py +++ b/database/coupons.py @@ -113,6 +113,7 @@ async def create_coupon_usage(session: AsyncSession, coupon_id: int, user_id: in except SQLAlchemyError as e: logger.error(f"❌ Ошибка при сохранении использования купона: {e}") await session.rollback() + raise async def check_coupon_usage(session: AsyncSession, coupon_id: int, user_id: int) -> bool: @@ -136,6 +137,7 @@ async def update_coupon_usage_count(session: AsyncSession, coupon_id: int): except SQLAlchemyError as e: logger.error(f"❌ Ошибка при обновлении купона {coupon_id}: {e}") await session.rollback() + raise def apply_percent_coupon(price_rub: int, coupon: Coupon) -> tuple[int, int]: diff --git a/database/db.py b/database/db.py index 11caa0b3..6fa61ff1 100644 --- a/database/db.py +++ b/database/db.py @@ -1,15 +1,24 @@ +import asyncio + +from sqlalchemy import text from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine from sqlalchemy.orm import declarative_base -from config import DATABASE_URL +from config import DATABASE_URL, DB_MAX_OVERFLOW, DB_POOL_SIZE + + +CONCURRENT_UPDATES_LIMIT = DB_POOL_SIZE + DB_MAX_OVERFLOW +MAX_UPDATE_AGE_SEC = 28 engine = create_async_engine( DATABASE_URL, echo=False, future=True, - pool_size=100, - max_overflow=200, + pool_size=DB_POOL_SIZE, + max_overflow=DB_MAX_OVERFLOW, pool_timeout=60, + pool_pre_ping=True, + pool_recycle=300, ) async_session_maker = async_sessionmaker( @@ -19,3 +28,20 @@ async_session_maker = async_sessionmaker( ) Base = declarative_base() + +WARM_POOL_COUNT = 10 + + +async def warm_pool() -> None: + """ + Прогревает пул соединений при старте. + """ + + async def _one() -> None: + async with async_session_maker() as session: + await session.execute(text("SELECT 1")) + + count = min(WARM_POOL_COUNT, DB_POOL_SIZE) + if count <= 0: + return + await asyncio.gather(*[asyncio.create_task(_one()) for _ in range(count)]) diff --git a/database/gifts.py b/database/gifts.py index da6be385..e7754b86 100644 --- a/database/gifts.py +++ b/database/gifts.py @@ -50,4 +50,4 @@ async def store_gift_link( except SQLAlchemyError as e: logger.error(f"❌ Ошибка при сохранении подарка {gift_id}: {e}") await session.rollback() - return False + raise diff --git a/database/importer.py b/database/importer.py index 4dbfa542..674ff7ed 100644 --- a/database/importer.py +++ b/database/importer.py @@ -92,8 +92,9 @@ async def import_keys_from_3xui_db(db_path: str, session: AsyncSession) -> tuple updated_at=datetime.utcnow(), ) ) - except SQLAlchemyError: - continue + except SQLAlchemyError as e: + await session.rollback() + raise RuntimeError(f"Ошибка при импорте пользователя tg_id={tg_id}") from e key_exists = await session.execute(select(Key).where(Key.client_id == client_id)) if key_exists.scalar(): @@ -119,8 +120,9 @@ async def import_keys_from_3xui_db(db_path: str, session: AsyncSession) -> tuple ) ) imported += 1 - except SQLAlchemyError: - continue + except SQLAlchemyError as e: + await session.rollback() + raise RuntimeError(f"Ошибка при импорте ключа client_id={client_id}") from e await session.commit() return imported, skipped diff --git a/database/init_db.py b/database/init_db.py index 6a71654c..c278d755 100644 --- a/database/init_db.py +++ b/database/init_db.py @@ -5,7 +5,6 @@ from sqlalchemy import select from config import ADMIN_ID from database.db import async_session_maker, engine from database.models import Admin, Base, User -from database.tariffs import initialize_all_tariff_weights async def init_db(): @@ -35,5 +34,3 @@ async def init_db(): ) ) await session.commit() - - await initialize_all_tariff_weights(session) diff --git a/database/keys.py b/database/keys.py index 2e276de4..a50d8a35 100644 --- a/database/keys.py +++ b/database/keys.py @@ -85,6 +85,7 @@ async def store_key( except SQLAlchemyError as e: logger.error(f"❌ Ошибка при сохранении ключа: {e}") await session.rollback() + raise async def get_keys(session: AsyncSession, tg_id: int): @@ -155,10 +156,11 @@ async def get_key_count(session: AsyncSession, tg_id: int) -> int: return result.scalar() or 0 -async def delete_key(session: AsyncSession, identifier: int | str): +async def delete_key(session: AsyncSession, identifier: int | str, commit: bool = True): stmt = delete(Key).where(Key.tg_id == identifier if str(identifier).isdigit() else Key.client_id == identifier) await session.execute(stmt) - await session.commit() + if commit: + await session.commit() logger.info(f"Ключ с идентификатором {identifier} удалён") diff --git a/database/notifications.py b/database/notifications.py index f00e2077..de23fd05 100644 --- a/database/notifications.py +++ b/database/notifications.py @@ -31,6 +31,7 @@ async def add_notification(session: AsyncSession, tg_id: int, notification_type: except SQLAlchemyError as e: logger.error(f"❌ Ошибка при добавлении уведомления: {e}") await session.rollback() + raise async def delete_notification(session: AsyncSession, tg_id: int, notification_type: str): @@ -101,6 +102,7 @@ async def check_hot_lead_discount(session: AsyncSession, tg_id: int) -> dict: except Exception as e: logger.error(f"❌ Ошибка при проверке скидки горячего лида для {tg_id}: {e}") + await session.rollback() return {"available": False} @@ -173,4 +175,5 @@ async def check_notifications_bulk( except Exception as e: logger.error(f"Ошибка при массовой проверке уведомлений типа {notification_type}: {e}") + await session.rollback() return [] diff --git a/database/payments.py b/database/payments.py index ceb380e3..a849f432 100644 --- a/database/payments.py +++ b/database/payments.py @@ -106,6 +106,7 @@ async def get_payment_by_id(session: AsyncSession, internal_id: int) -> dict | N } except SQLAlchemyError as e: logger.error(f"Ошибка при поиске платежа id={internal_id}: {e}") + await session.rollback() return None @@ -161,6 +162,7 @@ async def get_payment_by_payment_id(session: AsyncSession, pid: str) -> dict | N } except SQLAlchemyError as e: logger.error(f"Ошибка при поиске платежа payment_id={pid}: {e}") + await session.rollback() return None diff --git a/database/referrals.py b/database/referrals.py index 07e8ab69..730e85ef 100644 --- a/database/referrals.py +++ b/database/referrals.py @@ -224,6 +224,7 @@ async def get_referral_stats(session: AsyncSession, referrer_tg_id: int): except Exception as e: logger.error(f"[ReferralStats] Ошибка при получении статистики для пользователя {referrer_tg_id}: {e}") + await session.rollback() raise diff --git a/database/servers.py b/database/servers.py index bb5090b7..c885e3e4 100644 --- a/database/servers.py +++ b/database/servers.py @@ -100,6 +100,7 @@ async def get_servers(session: AsyncSession, include_enabled: bool = False) -> d return grouped except SQLAlchemyError as e: logger.error(f"Ошибка при получении серверов: {e}") + await session.rollback() return {} @@ -124,6 +125,7 @@ async def check_server_name_by_cluster(session: AsyncSession, server_name: str) return {"cluster_name": row[0]} if row else None except SQLAlchemyError as e: logger.error(f"Ошибка при поиске кластера для сервера {server_name}: {e}") + await session.rollback() return None @@ -161,6 +163,7 @@ async def get_server_by_name(session: AsyncSession, server_name: str) -> dict | return None except SQLAlchemyError as e: logger.error(f"Ошибка при получении сервера {server_name}: {e}") + await session.rollback() return None @@ -209,6 +212,7 @@ async def get_available_clusters(session: AsyncSession) -> list[str]: return [row[0] for row in result.all()] except SQLAlchemyError as e: logger.error(f"Ошибка при получении списка кластеров: {e}") + await session.rollback() return [] diff --git a/database/tariffs.py b/database/tariffs.py index 114a9ed3..0346cde5 100644 --- a/database/tariffs.py +++ b/database/tariffs.py @@ -73,6 +73,7 @@ async def get_tariffs( return tariffs except SQLAlchemyError as e: logger.error(f"[TARIFF] Ошибка при получении тарифов: {e}") + await session.rollback() return [] @@ -83,6 +84,7 @@ async def get_tariff_by_id(session: AsyncSession, tariff_id: int): return dict(tariff.__dict__) if tariff else None except SQLAlchemyError as e: logger.error(f"[TARIFF] Ошибка при получении тарифа по ID {tariff_id}: {e}") + await session.rollback() return None @@ -179,6 +181,7 @@ async def check_tariff_exists(session: AsyncSession, tariff_id: int): return False except SQLAlchemyError as e: logger.error(f"[TARIFF] Ошибка при проверке тарифа {tariff_id}: {e}") + await session.rollback() return False @@ -195,6 +198,7 @@ async def get_tariff_sort_order(session: AsyncSession, tariff_id: int) -> int: return sort_order except SQLAlchemyError as e: logger.error(f"[TARIFF] Ошибка при получении sort_order для тарифа {tariff_id}: {e}") + await session.rollback() return None diff --git a/database/temporary_data.py b/database/temporary_data.py index 55f34ed8..db40d8ea 100644 --- a/database/temporary_data.py +++ b/database/temporary_data.py @@ -25,6 +25,7 @@ async def create_temporary_data(session: AsyncSession, tg_id: int, state: str, d except SQLAlchemyError as e: logger.error(f"❌ Ошибка при сохранении временных данных для {tg_id}: {e}") await session.rollback() + raise async def get_temporary_data(session: AsyncSession, tg_id: int) -> dict | None: diff --git a/database/tracking_sources.py b/database/tracking_sources.py index 37b53bad..17f9da9d 100644 --- a/database/tracking_sources.py +++ b/database/tracking_sources.py @@ -21,6 +21,7 @@ async def create_tracking_source(session: AsyncSession, name: str, code: str, ty except SQLAlchemyError as e: logger.error(f"❌ Ошибка при создании источника {code}: {e}") await session.rollback() + raise async def get_all_tracking_sources(session: AsyncSession) -> list[dict]: diff --git a/database/users.py b/database/users.py index 31a49dfe..e51e1e3a 100644 --- a/database/users.py +++ b/database/users.py @@ -100,6 +100,7 @@ async def set_user_balance(session: AsyncSession, tg_id: int, balance: float) -> except SQLAlchemyError as e: logger.error(f"Ошибка при установке баланса для пользователя {tg_id}: {e}") await session.rollback() + raise async def update_trial(session: AsyncSession, tg_id: int, status: int): @@ -110,6 +111,7 @@ async def update_trial(session: AsyncSession, tg_id: int, status: int): except SQLAlchemyError as e: logger.error(f"[DB] Ошибка при обновлении триала пользователя {tg_id}: {e}") await session.rollback() + raise async def get_trial(session: AsyncSession, tg_id: int) -> int: @@ -205,7 +207,7 @@ async def delete_user_data(session: AsyncSession, tg_id: int): delete(Referral).where(or_(Referral.referrer_tg_id == tg_id, Referral.referred_tg_id == tg_id)) ) await session.execute(delete(CouponUsage).where(CouponUsage.user_id == tg_id)) - await delete_key(session, tg_id) + await delete_key(session, tg_id, commit=False) await session.execute(delete(TemporaryData).where(TemporaryData.tg_id == tg_id)) await session.execute(delete(BlockedUser).where(BlockedUser.tg_id == tg_id)) await session.execute(delete(User).where(User.tg_id == tg_id)) diff --git a/filters/admin.py b/filters/admin.py index 5daba74d..23b1a5f2 100644 --- a/filters/admin.py +++ b/filters/admin.py @@ -1,20 +1,48 @@ +import time + from aiogram.filters import BaseFilter from aiogram.types import CallbackQuery, Message -from sqlalchemy import select, exists +from sqlalchemy import select +from config import ADMIN_ID from database.db import async_session_maker from database.models import Admin +_ADMIN_CACHE: dict[int, tuple[float, bool, bool]] = {} +_ADMIN_CACHE_TTL = 60 + + +def _get_cached_admin(user_id: int) -> tuple[bool, bool] | None: + now = time.time() + entry = _ADMIN_CACHE.get(user_id) + if entry and entry[0] > now: + return entry[1], entry[2] + return None + + +def _set_cached_admin(user_id: int, is_admin: bool, is_superadmin: bool) -> None: + _ADMIN_CACHE[user_id] = (time.time() + _ADMIN_CACHE_TTL, is_admin, is_superadmin) + + class IsAdminFilter(BaseFilter): async def __call__(self, event: Message | CallbackQuery) -> bool: if not event.from_user: return False + user_id = event.from_user.id + cached = _get_cached_admin(user_id) + if cached is not None: + return cached[0] + try: async with async_session_maker() as session: - result = await session.execute(select(exists().where(Admin.tg_id == event.from_user.id))) - return result.scalar() + admin = (await session.execute(select(Admin).where(Admin.tg_id == user_id))).scalar_one_or_none() + admin_ids = (ADMIN_ID,) if isinstance(ADMIN_ID, int) else ADMIN_ID + is_admin = admin is not None or user_id in admin_ids + is_super = admin.role != "moderator" if admin else (user_id in admin_ids) + _set_cached_admin(user_id, is_admin, is_super) + return is_admin except (Exception,): return False @@ -24,13 +52,19 @@ class IsSuperAdminFilter(BaseFilter): if not event.from_user: return False + user_id = event.from_user.id + cached = _get_cached_admin(user_id) + if cached is not None: + return cached[1] + try: async with async_session_maker() as session: - admin = ( - await session.execute(select(Admin).where(Admin.tg_id == event.from_user.id)) - ).scalar_one_or_none() + admin = (await session.execute(select(Admin).where(Admin.tg_id == user_id))).scalar_one_or_none() if not admin: + _set_cached_admin(user_id, False, False) return False - return admin.role != "moderator" + is_super = admin.role != "moderator" + _set_cached_admin(user_id, True, is_super) + return is_super except (Exception,): return False diff --git a/handlers/fallback_router.py b/handlers/fallback_router.py index 9bc7c7af..bb50c8d4 100644 --- a/handlers/fallback_router.py +++ b/handlers/fallback_router.py @@ -1,9 +1,10 @@ +from typing import Any + from aiogram import F, Router from aiogram.types import InlineKeyboardButton, Message from aiogram.utils.keyboard import InlineKeyboardBuilder from config import SUPPORT_CHAT_URL -from database import async_session_maker from handlers.buttons import MAIN_MENU, SUPPORT from handlers.texts import FALLBACK_MESSAGE from hooks.hooks import run_hooks @@ -13,23 +14,21 @@ fallback_router = Router() @fallback_router.message(F.text) -async def handle_unhandled_messages(message: Message): - async with async_session_maker() as session: - await run_hooks( - "user_message", - user_id=message.from_user.id, - message_text=message.text, - username=message.from_user.username, - first_name=message.from_user.first_name, - last_name=message.from_user.last_name, - session=session, - message=message, - ) +async def handle_unhandled_messages(message: Message, session: Any): + await run_hooks( + "user_message", + user_id=message.from_user.id, + message_text=message.text, + username=message.from_user.username, + first_name=message.from_user.first_name, + last_name=message.from_user.last_name, + session=session, + message=message, + ) keyboard = InlineKeyboardBuilder() keyboard.row(InlineKeyboardButton(text=SUPPORT, url=SUPPORT_CHAT_URL)) keyboard.row(InlineKeyboardButton(text=MAIN_MENU, callback_data="profile")) - await message.answer( FALLBACK_MESSAGE, reply_markup=keyboard.as_markup(), diff --git a/handlers/keys/key_create.py b/handlers/keys/key_create.py index 34065db6..3599ec8b 100644 --- a/handlers/keys/key_create.py +++ b/handlers/keys/key_create.py @@ -306,6 +306,7 @@ async def handle_key_creation( tg_id=tg_id, cluster_name=cluster_name, group_code=group_code, + tariff_subgroup_hash=None, ) await state.set_state(Form.waiting_for_server_selection) @@ -329,6 +330,8 @@ async def show_tariffs_in_subgroup_user(callback: CallbackQuery, state: FSMConte ) return + await state.update_data(tariff_subgroup_hash=subgroup_hash) + tariffs_for_cluster = await get_tariffs_for_cluster(session, cluster_name) filtered: list[dict[str, Any]] = [] @@ -383,6 +386,59 @@ async def back_to_tariff_group_list(callback: CallbackQuery, state: FSMContext, ) +@router.callback_query(F.data == "back_to_subgroup_tariffs") +async def back_to_subgroup_tariffs(callback: CallbackQuery, state: FSMContext, session: AsyncSession): + """Возврат к списку тарифов текущей подгруппы (из конфигуратора).""" + data = await state.get_data() + subgroup_hash = data.get("tariff_subgroup_hash") + if not subgroup_hash: + await back_to_tariff_group_list(callback, state, session) + return + cluster_name = data.get("cluster_name") + group_code = data.get("group_code") + + subgroup = await find_subgroup_by_hash(session, subgroup_hash, group_code) + if not subgroup: + await back_to_tariff_group_list(callback, state, session) + return + + tariffs_for_cluster = await get_tariffs_for_cluster(session, cluster_name) + filtered: list[dict[str, Any]] = [] + if tariffs_for_cluster: + gc = tariffs_for_cluster[0].get("group_code") + if gc: + tariffs = await get_tariffs(session, group_code=gc) + filtered = [ + t for t in tariffs if t.get("subgroup_title") == subgroup and t.get("is_active") + ] + + if not filtered: + await back_to_tariff_group_list(callback, state, session) + return + + tg_id = callback.from_user.id + language_code = getattr(callback.from_user, "language_code", None) + builder = InlineKeyboardBuilder() + for tariff in filtered: + await add_tariff_button_generic( + builder=builder, + tariff=tariff, + session=session, + tg_id=tg_id, + language_code=language_code, + callback_prefix="select_tariff_plan", + ) + builder.row(InlineKeyboardButton(text=BACK, callback_data="back_to_tariff_group_list")) + builder.row(InlineKeyboardButton(text=MAIN_MENU, callback_data="profile")) + + await edit_or_send_message( + target_message=callback.message, + text=f"{subgroup}\n\nВыберите тариф:", + reply_markup=builder.as_markup(), + ) + await callback.answer() + + async def create_key( tg_id: int, expiry_time: datetime, diff --git a/handlers/payments/heleket/handlers.py b/handlers/payments/heleket/handlers.py index 238a4817..8676f29e 100644 --- a/handlers/payments/heleket/handlers.py +++ b/handlers/payments/heleket/handlers.py @@ -83,7 +83,7 @@ async def handle_custom_amount_input_heleket( method = enabled_methods[0] try: - payment_url = await generate_heleket_payment_link(amount, tg_id, method) + payment_url = await generate_heleket_payment_link(amount, tg_id, method, session) if not payment_url or payment_url == "https://heleket.com/": await edit_or_send_message( diff --git a/handlers/payments/heleket/service.py b/handlers/payments/heleket/service.py index 6a3ab162..56d2eb24 100644 --- a/handlers/payments/heleket/service.py +++ b/handlers/payments/heleket/service.py @@ -243,7 +243,7 @@ async def handle_custom_amount_input(message: types.Message, state: FSMContext, amount_rub = int(await to_rub(user_amount, "USD", session=session_http)) await state.update_data(amount=amount_rub) - payment_url = await generate_heleket_payment_link(amount_rub, message.chat.id, method) + payment_url = await generate_heleket_payment_link(amount_rub, message.chat.id, method, session) if not payment_url or payment_url == "https://heleket.com/": await edit_or_send_message( @@ -298,7 +298,7 @@ async def process_amount_selection(callback_query: types.CallbackQuery, state: F return await state.update_data(amount=amount) - payment_url = await generate_heleket_payment_link(amount, callback_query.message.chat.id, method) + payment_url = await generate_heleket_payment_link(amount, callback_query.message.chat.id, method, session) if not payment_url or payment_url == "https://heleket.com/": await edit_or_send_message( @@ -323,10 +323,13 @@ async def process_amount_selection(callback_query: types.CallbackQuery, state: F await state.set_state(ReplenishBalanceHeleket.waiting_for_payment_confirmation) -async def generate_heleket_payment_link(amount: int, tg_id: int, method: dict) -> str: +async def generate_heleket_payment_link( + amount: int, tg_id: int, method: dict, session: AsyncSession | None = None +) -> str: """ Создание платежа в Heleket и получение ссылки на оплату. amount — сумма в RUB, method['currency'] — валюта провайдера (обычно USD). + session — сессия из хендлера; если не передана, создаётся своя (лишняя нагрузка на пул). """ url = "https://api.heleket.com/v1/payment" unique_order_id = f"{int(time.time())}_{tg_id}" @@ -371,9 +374,9 @@ async def generate_heleket_payment_link(amount: int, tg_id: int, method: dict) - if resp_json.get("state") == 0: payment_url = resp_json.get("result", {}).get("url") if payment_url: - async with async_session_maker() as dbs: + if session is not None: await add_payment( - session=dbs, + session=session, tg_id=tg_id, amount=float(amount), payment_system="HELEKET", @@ -381,6 +384,17 @@ async def generate_heleket_payment_link(amount: int, tg_id: int, method: dict) - currency="RUB", payment_id=unique_order_id, ) + else: + async with async_session_maker() as dbs: + await add_payment( + session=dbs, + tg_id=tg_id, + amount=float(amount), + payment_system="HELEKET", + status="pending", + currency="RUB", + payment_id=unique_order_id, + ) logger.info(f"Heleket payment URL created for user {tg_id}") return payment_url else: diff --git a/handlers/payments/kassai/handlers.py b/handlers/payments/kassai/handlers.py index dd43ca90..704f440f 100644 --- a/handlers/payments/kassai/handlers.py +++ b/handlers/payments/kassai/handlers.py @@ -107,7 +107,7 @@ async def _handle_custom_amount_input_kassai( return try: - payment_url = await generate_kassai_payment_link(amount, tg_id, method) + payment_url = await generate_kassai_payment_link(amount, tg_id, method, session) if not payment_url or payment_url == "https://fk.life/": await edit_or_send_message( diff --git a/handlers/payments/kassai/service.py b/handlers/payments/kassai/service.py index 9382ed16..7ea57e82 100644 --- a/handlers/payments/kassai/service.py +++ b/handlers/payments/kassai/service.py @@ -266,7 +266,7 @@ async def handle_custom_amount_input(message: types.Message, state: FSMContext, amount_rub = int(await to_rub(user_amount, "USD", session=session_http)) await state.update_data(amount=amount_rub) - payment_url = await generate_kassai_payment_link(amount_rub, message.chat.id, method) + payment_url = await generate_kassai_payment_link(amount_rub, message.chat.id, method, session) if not payment_url or payment_url == "https://fk.life/": await edit_or_send_message( @@ -328,7 +328,7 @@ async def process_amount_selection(callback_query: types.CallbackQuery, state: F return await state.update_data(amount=amount) - payment_url = await generate_kassai_payment_link(amount, callback_query.message.chat.id, method) + payment_url = await generate_kassai_payment_link(amount, callback_query.message.chat.id, method, session) if not payment_url or payment_url == "https://fk.life/": await edit_or_send_message( @@ -353,9 +353,12 @@ async def process_amount_selection(callback_query: types.CallbackQuery, state: F await state.set_state(ReplenishBalanceKassaiState.waiting_for_payment_confirmation) -async def generate_kassai_payment_link(amount: int, tg_id: int, method: dict) -> str: +async def generate_kassai_payment_link( + amount: int, tg_id: int, method: dict, session: AsyncSession | None = None +) -> str: """ - Создание заказа в KassaAI и получение ссылки на оплату + Создание заказа в KassaAI и получение ссылки на оплату. + session — сессия из хендлера; если не передана, создаётся своя (лишняя нагрузка на пул). """ nonce = int(time.time()) unique_payment_id = f"{nonce}_{tg_id}" @@ -393,9 +396,9 @@ async def generate_kassai_payment_link(amount: int, tg_id: int, method: dict) -> if resp_json.get("type") == "success": payment_url = resp_json.get("location") if payment_url: - async with async_session_maker() as dbs: + if session is not None: await add_payment( - session=dbs, + session=session, tg_id=tg_id, amount=float(amount), payment_system="KASSAI", @@ -403,6 +406,17 @@ async def generate_kassai_payment_link(amount: int, tg_id: int, method: dict) -> currency="RUB", payment_id=unique_payment_id, ) + else: + async with async_session_maker() as dbs: + await add_payment( + session=dbs, + tg_id=tg_id, + amount=float(amount), + payment_system="KASSAI", + status="pending", + currency="RUB", + payment_id=unique_payment_id, + ) logger.info(f"KassaAI payment URL created for user {tg_id}") return payment_url logger.error(f"KassaAI: No location in response: {resp_json}") diff --git a/handlers/payments/yookassa/service.cpython-312-x86_64-linux-gnu.so b/handlers/payments/yookassa/service.cpython-312-x86_64-linux-gnu.so index 95da092c5cab43f02974b3cff0cf834511ff1696..c3cf9a82b96c59357b83fc9eb60efdf1384592f2 100644 GIT binary patch delta 140881 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" - text_hooks = await profile_text_hooks_task if text_hooks: profile_message = text_hooks[0] @@ -127,7 +117,6 @@ async def process_callback_view_profile( if extra_buttons: builder.row(*extra_buttons) - profile_menu_buttons = await profile_menu_buttons_task builder = insert_hook_buttons(builder, profile_menu_buttons) if BUTTONS_CONFIG.get("INSTRUCTIONS_BUTTON_ENABLE", INSTRUCTIONS_BUTTON): diff --git a/handlers/tariffs/addons/key_addons_pack.py b/handlers/tariffs/addons/key_addons_pack.py index 9532504c..91cd5dd7 100644 --- a/handlers/tariffs/addons/key_addons_pack.py +++ b/handlers/tariffs/addons/key_addons_pack.py @@ -16,7 +16,6 @@ from database import ( get_key_details, get_tariff_by_id, save_key_config_with_mode, - update_balance, ) from database.models import User from handlers.buttons import BACK, CONFIRM_ADDON_BUTTON_TEXT, PAYMENT diff --git a/handlers/tariffs/buy/key_tariffs.py b/handlers/tariffs/buy/key_tariffs.py index b78d8419..9b1b3473 100644 --- a/handlers/tariffs/buy/key_tariffs.py +++ b/handlers/tariffs/buy/key_tariffs.py @@ -12,7 +12,7 @@ from config import USE_NEW_PAYMENT_FLOW from core.settings.tariffs_config import normalize_tariff_config from database import get_balance, get_tariff_by_id from database.notifications import check_hot_lead_discount -from handlers.buttons import CONFIG_PAY_BUTTON_TEXT, MAIN_MENU, PAYMENT +from handlers.buttons import BACK, CONFIG_PAY_BUTTON_TEXT, MAIN_MENU, PAYMENT from handlers.payments.currency_rates import format_for_user from handlers.payments.fast_payment_flow import try_fast_payment_flow from handlers.tariffs.tariff_display import GB @@ -237,6 +237,7 @@ async def proceed_purchase_with_values( builder = InlineKeyboardBuilder() builder.row(InlineKeyboardButton(text=PAYMENT, callback_data="pay")) + builder.row(InlineKeyboardButton(text=BACK, callback_data="back_to_tariff_group_list")) builder.row(InlineKeyboardButton(text=MAIN_MENU, callback_data="profile")) await edit_or_send_message( target_message=callback_query.message, @@ -507,12 +508,18 @@ async def render_user_config_screen( is_renew_mode = data.get("renew_mode") == "renew" confirm_prefix = "cfg_renew_confirm" if is_renew_mode else "cfg_user_confirm" + back_callback = ( + "back_to_subgroup_tariffs" + if data.get("tariff_subgroup_hash") + else "back_to_tariff_group_list" + ) builder.row( InlineKeyboardButton( text=CONFIG_PAY_BUTTON_TEXT.format(amount=price_text), callback_data=f"{confirm_prefix}|{tariff_id}", ) ) + builder.row(InlineKeyboardButton(text=BACK, callback_data=back_callback)) builder.row(InlineKeyboardButton(text=MAIN_MENU, callback_data="profile")) await state.update_data( @@ -590,31 +597,17 @@ async def start_user_tariff_configurator( await render_user_config_screen(callback_query, state, session) -async def show_price_and_confirm(callback_query: CallbackQuery, state: FSMContext, session: Any | None): +async def show_price_and_confirm(callback_query: CallbackQuery, state: FSMContext, session: Any): """Обновляет экран конфигурации и показывает актуальную цену.""" - if session is None: - from database import async_session_maker - - async with async_session_maker() as new_session: - await show_price_and_confirm(callback_query, state, new_session) - return - await render_user_config_screen(callback_query, state, session) -async def finalize_config_and_purchase(callback_query: CallbackQuery, state: FSMContext, session: Any | None): +async def finalize_config_and_purchase(callback_query: CallbackQuery, state: FSMContext, session: Any): """Фиксирует выбор пользователя и проводит оплату тарифа.""" data = await state.get_data() tariff_id = data.get("config_tariff_id") cfg = data.get("tariff_config") or {} - if session is None: - from database import async_session_maker - - async with async_session_maker() as new_session: - await finalize_config_and_purchase(callback_query, state, new_session) - return - tariff = await get_tariff_by_id(session, int(tariff_id)) if not tariff: await edit_or_send_message( diff --git a/middlewares/__init__.py b/middlewares/__init__.py index 3f323477..18664bb3 100644 --- a/middlewares/__init__.py +++ b/middlewares/__init__.py @@ -8,6 +8,7 @@ from middlewares.subscription import SubscriptionMiddleware from .admin import AdminMiddleware from .answer import CallbackAnswerMiddleware +from .concurrency import ConcurrencyLimiterMiddleware from .direct_start_blocker import DirectStartBlockerMiddleware from .loggings import LoggingMiddleware from .maintenance import MaintenanceModeMiddleware @@ -34,6 +35,7 @@ def register_middleware( dispatcher.update.outer_middleware(StreamProbeMiddleware("global")) if sessionmaker: + dispatcher.update.outer_middleware(wrap(ConcurrencyLimiterMiddleware(), "concurrency")) dispatcher.update.outer_middleware(wrap(SessionMiddleware(sessionmaker), "session")) if DISABLE_DIRECT_START: diff --git a/middlewares/answer.py b/middlewares/answer.py index 5da28936..94400486 100644 --- a/middlewares/answer.py +++ b/middlewares/answer.py @@ -15,8 +15,14 @@ class CallbackAnswerMiddleware(BaseMiddleware): data: dict[str, Any], ) -> Any: if isinstance(event, CallbackQuery): - await event.answer() + try: + await event.answer() + except Exception: + pass if isinstance(event.message, InaccessibleMessage): - new_message = await bot.send_message(event.message.chat.id, "⏳") - object.__setattr__(event, "message", new_message) + try: + new_message = await bot.send_message(event.message.chat.id, "⏳") + object.__setattr__(event, "message", new_message) + except Exception: + pass return await handler(event, data) diff --git a/middlewares/concurrency.py b/middlewares/concurrency.py new file mode 100644 index 00000000..f583f00c --- /dev/null +++ b/middlewares/concurrency.py @@ -0,0 +1,59 @@ +import asyncio +import time +from collections.abc import Awaitable, Callable +from typing import Any + +from aiogram import BaseMiddleware, Bot +from aiogram.types import CallbackQuery, Message, TelegramObject + +from database.db import CONCURRENT_UPDATES_LIMIT, MAX_UPDATE_AGE_SEC + + +class ConcurrencyLimiterMiddleware(BaseMiddleware): + """ + Регистрируется до SessionMiddleware. Ограничивает число апдейтов, одновременно + получающих сессию, и отсекает апдейты, ждавшие слишком долго. + """ + + def __init__(self) -> None: + self._semaphore = asyncio.Semaphore(CONCURRENT_UPDATES_LIMIT) + + async def __call__( + self, + handler: Callable[[TelegramObject, dict[str, Any]], Awaitable[Any]], + event: TelegramObject, + data: dict[str, Any], + ) -> Any: + data["request_time"] = time.monotonic() + await self._semaphore.acquire() + try: + age = time.monotonic() - data["request_time"] + if age > MAX_UPDATE_AGE_SEC: + await self._reject_stale(event, data) + return None + return await handler(event, data) + finally: + self._semaphore.release() + + async def _reject_stale(self, event: TelegramObject, data: dict[str, Any]) -> None: + if isinstance(event, CallbackQuery): + bot: Bot = data.get("bot") + if bot: + try: + await bot.answer_callback_query( + event.id, + text="Время ожидания истекло. Нажмите ещё раз.", + show_alert=False, + ) + except Exception: + pass + elif isinstance(event, Message) and event.text and event.chat: + bot: Bot = data.get("bot") + if bot: + try: + await bot.send_message( + event.chat.id, + "Сейчас высокая нагрузка. Отправьте команду ещё раз через пару секунд.", + ) + except Exception: + pass diff --git a/middlewares/session.py b/middlewares/session.py index 741aecf3..35803280 100644 --- a/middlewares/session.py +++ b/middlewares/session.py @@ -9,10 +9,20 @@ class SessionMiddleware(BaseMiddleware): if data.get("session"): return await handler(event, data) - async with self.sessionmaker() as session: - data["session"] = session + session = self.sessionmaker() + data["session"] = session + try: + result = await handler(event, data) + await session.commit() + return result + except Exception: try: - return await handler(event, data) - except Exception: await session.rollback() - raise + except Exception: + pass + raise + finally: + try: + await session.close() + except Exception: + pass diff --git a/utils/custom_emojis.py b/utils/custom_emojis.py index 108d9bb0..5685bad4 100644 --- a/utils/custom_emojis.py +++ b/utils/custom_emojis.py @@ -71,8 +71,7 @@ async def _fetch_placeholder(emoji_id: str) -> str: async def _replace_markers(text: str) -> tuple[str, list[MessageEntity]]: - """Replace markers with placeholders and build custom emoji entities. - """ + """Replace markers with placeholders and build custom emoji entities.""" if not text: return text, [] diff --git a/utils/errors.py b/utils/errors.py index 41cf7e8b..82e398e8 100644 --- a/utils/errors.py +++ b/utils/errors.py @@ -1,3 +1,5 @@ +import html +import re import traceback from aiogram import Bot, Dispatcher @@ -11,6 +13,15 @@ from database import async_session_maker from logger import logger +_OBFUSCATED_MIN_SEQ = 15 +_PLACEHOLDER = "" + + +def _sanitize_traceback(text: str) -> str: + """Убирает из текста длинные последовательности \\xNN (обфусцированный код).""" + return re.sub(r"(\\x[0-9a-fA-F]{2}){" + str(_OBFUSCATED_MIN_SEQ) + r",}", _PLACEHOLDER, text) + + def setup_error_handlers(dp: Dispatcher) -> None: @dp.errors(ExceptionTypeFilter(Exception)) async def errors_handler(event: ErrorEvent, bot: Bot) -> bool: @@ -27,11 +38,13 @@ def setup_error_handlers(dp: Dispatcher) -> None: or "message to delete not found" in error_message ): try: - tb = "".join( - traceback.format_exception( - type(event.exception), - event.exception, - event.exception.__traceback__, + tb = _sanitize_traceback( + "".join( + traceback.format_exception( + type(event.exception), + event.exception, + event.exception.__traceback__, + ) ) ) logger.warning(f"Показываем стартовое меню из-за TelegramBadRequest: {error_message}") @@ -109,14 +122,16 @@ def setup_error_handlers(dp: Dispatcher) -> None: return True try: + tb_text = _sanitize_traceback(traceback.format_exc()) for admin_id in ADMIN_ID: + exc_text = html.escape(str(event.exception)[:1021]) await bot.send_document( chat_id=admin_id, document=BufferedInputFile( - traceback.format_exc().encode(), + tb_text.encode(), filename=f"error_{event.update.update_id}.txt", ), - caption=f"{hbold(type(event.exception).__name__)}: {str(event.exception)[:1021]}...", + caption=f"{hbold(type(event.exception).__name__)}: {exc_text}...", ) from handlers.start import start_entry