reminder-bot/bot/handlers/errors.py

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}")