diff --git a/main.py b/main.py index 5ba90df..6bbb553 100644 --- a/main.py +++ b/main.py @@ -1,7 +1,9 @@ +from telegram.error import NetworkError from telegram.ext import ( ApplicationBuilder, CallbackQueryHandler, CommandHandler, + ContextTypes, MessageHandler, filters, ) @@ -41,6 +43,21 @@ from src.handlers import ( from src.logger import logger +async def error_handler(update: object, context: ContextTypes.DEFAULT_TYPE) -> None: + """Обработчик ошибок бота.""" + error = context.error + + # Сетевые ошибки при polling - это норма, логируем компактно + if isinstance(error, NetworkError): + logger.warning(f"Network error during polling: {error}") + return + + # Для остальных ошибок логируем с контекстом + logger.error( + f"Exception while handling update {update}: {error}", exc_info=context.error + ) + + def main() -> None: """Точка входа приложения.""" logger.info("Запуск бота...") @@ -125,6 +142,9 @@ def main() -> None: MessageHandler(filters.TEXT & ~filters.COMMAND, handle_text_message) ) + # Error handler + app.add_error_handler(error_handler) + logger.info("Бот запущен") app.run_polling()