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