diff --git a/handlers/payments/heleket/handlers.py b/handlers/payments/heleket/handlers.py index 1408b26c..9d7180dc 100644 --- a/handlers/payments/heleket/handlers.py +++ b/handlers/payments/heleket/handlers.py @@ -14,7 +14,7 @@ from logger import logger from ..constants import ALLOWED_TEMP_PAYMENT_STATES from .service import ( - get_heleket_methods, + HELEKET_METHODS, generate_heleket_payment_link, process_callback_pay_heleket, router as service_router, @@ -75,7 +75,7 @@ async def handle_custom_amount_input_heleket( ) return - enabled_methods = [m for m in get_heleket_methods() if m["enable"]] + enabled_methods = [m for m in HELEKET_METHODS.values() if m["enable"]] if not enabled_methods: await edit_or_send_message( target_message=message, diff --git a/handlers/payments/heleket/service.py b/handlers/payments/heleket/service.py index af59673f..024ff900 100644 --- a/handlers/payments/heleket/service.py +++ b/handlers/payments/heleket/service.py @@ -64,28 +64,9 @@ class ReplenishBalanceHeleket(StatesGroup): entering_custom_amount = State() -def _is_heleket_enabled() -> bool: - try: - from core.bootstrap import PAYMENTS_CONFIG - return bool(PAYMENTS_CONFIG.get("HELEKET", PROVIDERS_ENABLED.get("HELEKET", False))) - except ImportError: - return bool(PROVIDERS_ENABLED.get("HELEKET", False)) - - -def get_heleket_methods() -> list[dict]: - return [ - { - "enable": _is_heleket_enabled(), - "currency": "USD", - "to_currency": None, - "name": "crypto", - "button": HELEKET, - "desc": HELEKET_CRYPTO_DESCRIPTION, - }, - ] - - -HELEKET_PAYMENT_METHODS = get_heleket_methods() +HELEKET_METHODS = { + "crypto": {"enable": PROVIDERS_ENABLED.get("HELEKET", False), "currency": "USD", "to_currency": None, "button": HELEKET, "desc": HELEKET_CRYPTO_DESCRIPTION}, +} async def process_callback_pay_heleket( @@ -97,15 +78,13 @@ async def process_callback_pay_heleket( await state.clear() if not method_name: - methods = get_heleket_methods() - enabled_methods = [m["name"] for m in methods if m["enable"]] + enabled_methods = [name for name, m in HELEKET_METHODS.items() if m["enable"]] if len(enabled_methods) == 1: method_name = enabled_methods[0] if method_name: - methods = get_heleket_methods() - method = next((m for m in methods if m["name"] == method_name and m["enable"]), None) - if not method: + method = HELEKET_METHODS.get(method_name) + if not method or not method["enable"]: await edit_or_send_message( target_message=callback_query.message, text="Ошибка: выбранный способ оплаты недоступен.", @@ -139,10 +118,10 @@ async def process_callback_pay_heleket( return builder = InlineKeyboardBuilder() - for method in get_heleket_methods(): + for name, method in HELEKET_METHODS.items(): if method["enable"]: builder.row( - InlineKeyboardButton(text=method["button"], callback_data=f"heleket_method|{method['name']}") + InlineKeyboardButton(text=method["button"], callback_data=f"heleket_method|{name}") ) builder.row(InlineKeyboardButton(text=BACK, callback_data="balance")) @@ -165,7 +144,7 @@ async def process_callback_pay_heleket( @router.callback_query(F.data.startswith("heleket_method|")) async def process_method_selection(callback_query: types.CallbackQuery, state: FSMContext, session: AsyncSession): method_name = callback_query.data.split("|")[1] - method = next((m for m in HELEKET_PAYMENT_METHODS if m["name"] == method_name), None) + method = HELEKET_METHODS.get(method_name) if not method or not method["enable"]: await edit_or_send_message( @@ -223,7 +202,7 @@ async def process_custom_amount_button(callback_query: types.CallbackQuery, stat async def handle_custom_amount_input(message: types.Message, state: FSMContext, session: AsyncSession): data = await state.get_data() method_name = data.get("heleket_method") - method = next((m for m in HELEKET_PAYMENT_METHODS if m["name"] == method_name), None) + method = HELEKET_METHODS.get(method_name) if not method or not method["enable"]: await edit_or_send_message( @@ -302,7 +281,7 @@ async def process_amount_selection(callback_query: types.CallbackQuery, state: F return method_name = "crypto" - method = next((m for m in HELEKET_PAYMENT_METHODS if m["name"] == method_name), None) + method = HELEKET_METHODS.get(method_name) if not method or not method["enable"]: await edit_or_send_message( diff --git a/handlers/payments/kassai/handlers.py b/handlers/payments/kassai/handlers.py index fd429365..664159da 100644 --- a/handlers/payments/kassai/handlers.py +++ b/handlers/payments/kassai/handlers.py @@ -14,7 +14,7 @@ from logger import logger from ..constants import ALLOWED_TEMP_PAYMENT_STATES from .service import ( - get_kassai_methods, + KASSAI_METHODS, generate_kassai_payment_link, process_callback_pay_kassai, router as service_router, @@ -104,11 +104,8 @@ async def _handle_custom_amount_input_kassai( ) return - method = next( - (m for m in get_kassai_methods() if m["name"] == method_name and m["enable"]), - None, - ) - if not method: + method = KASSAI_METHODS.get(method_name) + if not method or not method["enable"]: method_label = "картами" if method_name == "cards" else "через СБП" await edit_or_send_message( target_message=message, diff --git a/handlers/payments/kassai/service.py b/handlers/payments/kassai/service.py index f8e030f7..4a4b66d7 100644 --- a/handlers/payments/kassai/service.py +++ b/handlers/payments/kassai/service.py @@ -64,34 +64,10 @@ class ReplenishBalanceKassaiState(StatesGroup): entering_custom_amount = State() -def _is_kassai_enabled(provider: str) -> bool: - try: - from core.bootstrap import PAYMENTS_CONFIG - return bool(PAYMENTS_CONFIG.get(provider, PROVIDERS_ENABLED.get(provider, False))) - except ImportError: - return bool(PROVIDERS_ENABLED.get(provider, False)) - - -def get_kassai_methods() -> list[dict]: - return [ - { - "enable": _is_kassai_enabled("KASSAI_CARDS"), - "method": 36, - "name": "cards", - "button": KASSAI_CARDS, - "desc": KASSAI_CARDS_DESCRIPTION, - }, - { - "enable": _is_kassai_enabled("KASSAI_SBP"), - "method": 44, - "name": "sbp", - "button": KASSAI_SBP, - "desc": KASSAI_SBP_DESCRIPTION, - }, - ] - - -KASSAI_PAYMENT_METHODS = get_kassai_methods() +KASSAI_METHODS = { + "cards": {"enable": PROVIDERS_ENABLED.get("KASSAI_CARDS", False), "method": 36, "button": KASSAI_CARDS, "desc": KASSAI_CARDS_DESCRIPTION}, + "sbp": {"enable": PROVIDERS_ENABLED.get("KASSAI_SBP", False), "method": 44, "button": KASSAI_SBP, "desc": KASSAI_SBP_DESCRIPTION}, +} @router.callback_query(F.data == "pay_kassai") @@ -108,12 +84,8 @@ async def process_callback_pay_kassai( await state.clear() if method_name: - methods = get_kassai_methods() - method = next( - (m for m in methods if m["name"] == method_name and m["enable"]), - None, - ) - if not method: + method = KASSAI_METHODS.get(method_name) + if not method or not method["enable"]: await edit_or_send_message( target_message=callback_query.message, text="Ошибка: выбранный способ оплаты недоступен.", @@ -147,12 +119,12 @@ async def process_callback_pay_kassai( return builder = InlineKeyboardBuilder() - for method in get_kassai_methods(): + for name, method in KASSAI_METHODS.items(): if method["enable"]: builder.row( InlineKeyboardButton( text=method["button"], - callback_data=f"kassai_method|{method['name']}", + callback_data=f"kassai_method|{name}", ) ) builder.row(InlineKeyboardButton(text=BACK, callback_data="balance")) @@ -182,7 +154,7 @@ async def process_callback_pay_kassai( @router.callback_query(F.data.startswith("kassai_method|")) async def process_method_selection(callback_query: types.CallbackQuery, state: FSMContext, session: AsyncSession): method_name = callback_query.data.split("|")[1] - method = next((m for m in KASSAI_PAYMENT_METHODS if m["name"] == method_name), None) + method = KASSAI_METHODS.get(method_name) if not method or not method["enable"]: await edit_or_send_message( @@ -240,7 +212,7 @@ async def process_custom_amount_button(callback_query: types.CallbackQuery, stat async def handle_custom_amount_input(message: types.Message, state: FSMContext, session: AsyncSession): data = await state.get_data() method_name = data.get("kassai_method") - method = next((m for m in KASSAI_PAYMENT_METHODS if m["name"] == method_name), None) + method = KASSAI_METHODS.get(method_name) if not method or not method["enable"]: await edit_or_send_message( @@ -329,7 +301,7 @@ async def process_amount_selection(callback_query: types.CallbackQuery, state: F return method_name = "cards" if callback_query.data.startswith("kassai_cards") else "sbp" - method = next((m for m in KASSAI_PAYMENT_METHODS if m["name"] == method_name), None) + method = KASSAI_METHODS.get(method_name) if not method or not method["enable"]: await edit_or_send_message(