44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
"""Global error handler."""
|
|
|
|
from aiogram import Router
|
|
from aiogram.types import ErrorEvent
|
|
from aiogram.exceptions import TelegramBadRequest
|
|
|
|
from bot.logging_config import get_logger
|
|
|
|
logger = get_logger(__name__)
|
|
|
|
router = Router(name="errors")
|
|
|
|
|
|
@router.error()
|
|
async def error_handler(event: ErrorEvent) -> None:
|
|
"""
|
|
Global error handler for all unhandled exceptions.
|
|
|
|
Args:
|
|
event: Error event
|
|
"""
|
|
logger.error(
|
|
f"Error occurred: {event.exception.__class__.__name__}: {event.exception}",
|
|
exc_info=event.exception,
|
|
)
|
|
|
|
# Try to notify user if possible
|
|
if event.update and event.update.message:
|
|
try:
|
|
await event.update.message.answer(
|
|
"Произошла ошибка. Попробуй ещё раз или используй /cancel для отмены текущего действия."
|
|
)
|
|
except Exception as e:
|
|
logger.error(f"Failed to send error message to user: {e}")
|
|
|
|
elif event.update and event.update.callback_query:
|
|
try:
|
|
await event.update.callback_query.answer(
|
|
"Произошла ошибка. Попробуй ещё раз.",
|
|
show_alert=True,
|
|
)
|
|
except Exception as e:
|
|
logger.error(f"Failed to send error callback to user: {e}")
|