Enhance error handling in subscription response methods
- Implemented try-except blocks around callback answer methods to prevent exceptions from disrupting user interactions. - Ensured consistent use of the `answer` method across various subscription-related handlers, improving reliability in user notifications.
This commit is contained in:
@@ -35,7 +35,10 @@ async def display_subscription_options(event: Union[types.Message,
|
|||||||
if not i18n:
|
if not i18n:
|
||||||
err_msg = "Language service error."
|
err_msg = "Language service error."
|
||||||
if isinstance(event, types.CallbackQuery):
|
if isinstance(event, types.CallbackQuery):
|
||||||
await event.answer(err_msg, show_alert=True)
|
try:
|
||||||
|
await event.answer(err_msg, show_alert=True)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
elif isinstance(event, types.Message):
|
elif isinstance(event, types.Message):
|
||||||
await event.answer(err_msg)
|
await event.answer(err_msg)
|
||||||
return
|
return
|
||||||
@@ -54,8 +57,11 @@ async def display_subscription_options(event: Union[types.Message,
|
|||||||
event, types.CallbackQuery) else event
|
event, types.CallbackQuery) else event
|
||||||
if not target_message_obj:
|
if not target_message_obj:
|
||||||
if isinstance(event, types.CallbackQuery):
|
if isinstance(event, types.CallbackQuery):
|
||||||
await event.answer(get_text("error_occurred_try_again"),
|
try:
|
||||||
show_alert=True)
|
await event.answer(get_text("error_occurred_try_again"),
|
||||||
|
show_alert=True)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
return
|
return
|
||||||
|
|
||||||
if isinstance(event, types.CallbackQuery):
|
if isinstance(event, types.CallbackQuery):
|
||||||
@@ -65,7 +71,10 @@ async def display_subscription_options(event: Union[types.Message,
|
|||||||
except Exception:
|
except Exception:
|
||||||
await target_message_obj.answer(text_content,
|
await target_message_obj.answer(text_content,
|
||||||
reply_markup=reply_markup)
|
reply_markup=reply_markup)
|
||||||
await event.answer()
|
try:
|
||||||
|
await event.answer()
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
else:
|
else:
|
||||||
await target_message_obj.answer(text_content,
|
await target_message_obj.answer(text_content,
|
||||||
reply_markup=reply_markup)
|
reply_markup=reply_markup)
|
||||||
@@ -81,8 +90,11 @@ async def select_subscription_period_callback_handler(
|
|||||||
) if i18n else key
|
) if i18n else key
|
||||||
|
|
||||||
if not i18n or not callback.message:
|
if not i18n or not callback.message:
|
||||||
await callback.answer(get_text("error_occurred_try_again"),
|
try:
|
||||||
show_alert=True)
|
await callback.answer(get_text("error_occurred_try_again"),
|
||||||
|
show_alert=True)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -90,7 +102,10 @@ async def select_subscription_period_callback_handler(
|
|||||||
except (ValueError, IndexError):
|
except (ValueError, IndexError):
|
||||||
logging.error(
|
logging.error(
|
||||||
f"Invalid subscription period in callback_data: {callback.data}")
|
f"Invalid subscription period in callback_data: {callback.data}")
|
||||||
await callback.answer(get_text("error_try_again"), show_alert=True)
|
try:
|
||||||
|
await callback.answer(get_text("error_try_again"), show_alert=True)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
return
|
return
|
||||||
|
|
||||||
price_rub = settings.subscription_options.get(months)
|
price_rub = settings.subscription_options.get(months)
|
||||||
@@ -98,7 +113,10 @@ async def select_subscription_period_callback_handler(
|
|||||||
logging.error(
|
logging.error(
|
||||||
f"Price not found for {months} months subscription period in settings.subscription_options."
|
f"Price not found for {months} months subscription period in settings.subscription_options."
|
||||||
)
|
)
|
||||||
await callback.answer(get_text("error_try_again"), show_alert=True)
|
try:
|
||||||
|
await callback.answer(get_text("error_try_again"), show_alert=True)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
return
|
return
|
||||||
|
|
||||||
currency_symbol_val = settings.DEFAULT_CURRENCY_SYMBOL
|
currency_symbol_val = settings.DEFAULT_CURRENCY_SYMBOL
|
||||||
@@ -125,7 +143,10 @@ async def select_subscription_period_callback_handler(
|
|||||||
)
|
)
|
||||||
await callback.message.answer(text_content,
|
await callback.message.answer(text_content,
|
||||||
reply_markup=reply_markup)
|
reply_markup=reply_markup)
|
||||||
await callback.answer()
|
try:
|
||||||
|
await callback.answer()
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.callback_query(F.data.startswith("pay_stars:"))
|
@router.callback_query(F.data.startswith("pay_stars:"))
|
||||||
@@ -138,7 +159,10 @@ async def pay_stars_callback_handler(
|
|||||||
get_text = lambda key, **kwargs: i18n.gettext(current_lang, key, **kwargs) if i18n else key
|
get_text = lambda key, **kwargs: i18n.gettext(current_lang, key, **kwargs) if i18n else key
|
||||||
|
|
||||||
if not i18n or not callback.message:
|
if not i18n or not callback.message:
|
||||||
await callback.answer(get_text("error_occurred_try_again"), show_alert=True)
|
try:
|
||||||
|
await callback.answer(get_text("error_occurred_try_again"), show_alert=True)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -148,7 +172,10 @@ async def pay_stars_callback_handler(
|
|||||||
stars_price = int(price_str)
|
stars_price = int(price_str)
|
||||||
except (ValueError, IndexError):
|
except (ValueError, IndexError):
|
||||||
logging.error(f"Invalid pay_stars data in callback: {callback.data}")
|
logging.error(f"Invalid pay_stars data in callback: {callback.data}")
|
||||||
await callback.answer(get_text("error_try_again"), show_alert=True)
|
try:
|
||||||
|
await callback.answer(get_text("error_try_again"), show_alert=True)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
return
|
return
|
||||||
|
|
||||||
user_id = callback.from_user.id
|
user_id = callback.from_user.id
|
||||||
@@ -158,10 +185,16 @@ async def pay_stars_callback_handler(
|
|||||||
session, user_id, months, stars_price, payment_description)
|
session, user_id, months, stars_price, payment_description)
|
||||||
if payment_id is None:
|
if payment_id is None:
|
||||||
await callback.message.edit_text(get_text("error_payment_gateway"))
|
await callback.message.edit_text(get_text("error_payment_gateway"))
|
||||||
await callback.answer(get_text("error_try_again"), show_alert=True)
|
try:
|
||||||
|
await callback.answer(get_text("error_try_again"), show_alert=True)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
return
|
return
|
||||||
|
|
||||||
await callback.answer()
|
try:
|
||||||
|
await callback.answer()
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.callback_query(F.data.startswith("pay_yk:"))
|
@router.callback_query(F.data.startswith("pay_yk:"))
|
||||||
@@ -175,9 +208,11 @@ async def pay_yk_callback_handler(
|
|||||||
) if i18n else key
|
) if i18n else key
|
||||||
|
|
||||||
if not i18n or not callback.message:
|
if not i18n or not callback.message:
|
||||||
|
try:
|
||||||
await callback.answer(get_text("error_occurred_try_again"),
|
await callback.answer(get_text("error_occurred_try_again"),
|
||||||
show_alert=True)
|
show_alert=True)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
return
|
return
|
||||||
|
|
||||||
if not yookassa_service or not yookassa_service.configured:
|
if not yookassa_service or not yookassa_service.configured:
|
||||||
@@ -185,8 +220,11 @@ async def pay_yk_callback_handler(
|
|||||||
target_msg_edit = callback.message
|
target_msg_edit = callback.message
|
||||||
await target_msg_edit.edit_text(get_text("payment_service_unavailable")
|
await target_msg_edit.edit_text(get_text("payment_service_unavailable")
|
||||||
)
|
)
|
||||||
await callback.answer(get_text("payment_service_unavailable_alert"),
|
try:
|
||||||
show_alert=True)
|
await callback.answer(get_text("payment_service_unavailable_alert"),
|
||||||
|
show_alert=True)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -197,7 +235,10 @@ async def pay_yk_callback_handler(
|
|||||||
except (ValueError, IndexError):
|
except (ValueError, IndexError):
|
||||||
logging.error(
|
logging.error(
|
||||||
f"Invalid pay_yk data in callback: {callback.data}")
|
f"Invalid pay_yk data in callback: {callback.data}")
|
||||||
await callback.answer(get_text("error_try_again"), show_alert=True)
|
try:
|
||||||
|
await callback.answer(get_text("error_try_again"), show_alert=True)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
return
|
return
|
||||||
|
|
||||||
user_id = callback.from_user.id
|
user_id = callback.from_user.id
|
||||||
@@ -229,13 +270,19 @@ async def pay_yk_callback_handler(
|
|||||||
exc_info=True)
|
exc_info=True)
|
||||||
await callback.message.edit_text(
|
await callback.message.edit_text(
|
||||||
get_text("error_creating_payment_record"))
|
get_text("error_creating_payment_record"))
|
||||||
await callback.answer(get_text("error_try_again"), show_alert=True)
|
try:
|
||||||
|
await callback.answer(get_text("error_try_again"), show_alert=True)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
return
|
return
|
||||||
|
|
||||||
if not db_payment_record:
|
if not db_payment_record:
|
||||||
await callback.message.edit_text(
|
await callback.message.edit_text(
|
||||||
get_text("error_creating_payment_record"))
|
get_text("error_creating_payment_record"))
|
||||||
await callback.answer(get_text("error_try_again"), show_alert=True)
|
try:
|
||||||
|
await callback.answer(get_text("error_try_again"), show_alert=True)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
return
|
return
|
||||||
|
|
||||||
yookassa_metadata = {
|
yookassa_metadata = {
|
||||||
@@ -267,7 +314,10 @@ async def pay_yk_callback_handler(
|
|||||||
exc_info=True)
|
exc_info=True)
|
||||||
await callback.message.edit_text(
|
await callback.message.edit_text(
|
||||||
get_text("error_payment_gateway_link_failed"))
|
get_text("error_payment_gateway_link_failed"))
|
||||||
await callback.answer(get_text("error_try_again"), show_alert=True)
|
try:
|
||||||
|
await callback.answer(get_text("error_try_again"), show_alert=True)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
return
|
return
|
||||||
|
|
||||||
await callback.message.edit_text(
|
await callback.message.edit_text(
|
||||||
@@ -291,7 +341,10 @@ async def pay_yk_callback_handler(
|
|||||||
)
|
)
|
||||||
await callback.message.edit_text(get_text("error_payment_gateway"))
|
await callback.message.edit_text(get_text("error_payment_gateway"))
|
||||||
|
|
||||||
await callback.answer()
|
try:
|
||||||
|
await callback.answer()
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.callback_query(F.data.startswith("pay_crypto:"))
|
@router.callback_query(F.data.startswith("pay_crypto:"))
|
||||||
@@ -303,12 +356,18 @@ async def pay_crypto_callback_handler(
|
|||||||
get_text = lambda key, **kwargs: i18n.gettext(current_lang, key, **kwargs) if i18n else key
|
get_text = lambda key, **kwargs: i18n.gettext(current_lang, key, **kwargs) if i18n else key
|
||||||
|
|
||||||
if not i18n or not callback.message:
|
if not i18n or not callback.message:
|
||||||
await callback.answer(get_text("error_occurred_try_again"), show_alert=True)
|
try:
|
||||||
|
await callback.answer(get_text("error_occurred_try_again"), show_alert=True)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
return
|
return
|
||||||
|
|
||||||
if not cryptopay_service or not cryptopay_service.configured:
|
if not cryptopay_service or not cryptopay_service.configured:
|
||||||
await callback.message.edit_text(get_text("payment_service_unavailable"))
|
await callback.message.edit_text(get_text("payment_service_unavailable"))
|
||||||
await callback.answer(get_text("payment_service_unavailable_alert"), show_alert=True)
|
try:
|
||||||
|
await callback.answer(get_text("payment_service_unavailable_alert"), show_alert=True)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -318,7 +377,10 @@ async def pay_crypto_callback_handler(
|
|||||||
amount_val = float(amount_str)
|
amount_val = float(amount_str)
|
||||||
except (ValueError, IndexError):
|
except (ValueError, IndexError):
|
||||||
logging.error(f"Invalid pay_crypto data in callback: {callback.data}")
|
logging.error(f"Invalid pay_crypto data in callback: {callback.data}")
|
||||||
await callback.answer(get_text("error_try_again"), show_alert=True)
|
try:
|
||||||
|
await callback.answer(get_text("error_try_again"), show_alert=True)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
return
|
return
|
||||||
|
|
||||||
user_id = callback.from_user.id
|
user_id = callback.from_user.id
|
||||||
@@ -334,7 +396,10 @@ async def pay_crypto_callback_handler(
|
|||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
await callback.message.edit_text(get_text("error_payment_gateway"))
|
await callback.message.edit_text(get_text("error_payment_gateway"))
|
||||||
await callback.answer()
|
try:
|
||||||
|
await callback.answer()
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
@router.callback_query(F.data == "main_action:subscribe")
|
@router.callback_query(F.data == "main_action:subscribe")
|
||||||
@@ -387,7 +452,10 @@ async def my_subscription_command_handler(
|
|||||||
)
|
)
|
||||||
|
|
||||||
if isinstance(event, types.CallbackQuery):
|
if isinstance(event, types.CallbackQuery):
|
||||||
await event.answer()
|
try:
|
||||||
|
await event.answer()
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
try:
|
try:
|
||||||
await event.message.edit_text(text, reply_markup=kb)
|
await event.message.edit_text(text, reply_markup=kb)
|
||||||
except:
|
except:
|
||||||
@@ -421,7 +489,10 @@ async def my_subscription_command_handler(
|
|||||||
markup = get_back_to_main_menu_markup(current_lang, i18n)
|
markup = get_back_to_main_menu_markup(current_lang, i18n)
|
||||||
|
|
||||||
if isinstance(event, types.CallbackQuery):
|
if isinstance(event, types.CallbackQuery):
|
||||||
await event.answer()
|
try:
|
||||||
|
await event.answer()
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
try:
|
try:
|
||||||
await event.message.edit_text(text, reply_markup=markup, parse_mode="HTML", disable_web_page_preview=True)
|
await event.message.edit_text(text, reply_markup=markup, parse_mode="HTML", disable_web_page_preview=True)
|
||||||
except:
|
except:
|
||||||
|
|||||||
Reference in New Issue
Block a user