From b0d1e2b6c2cc6f660d46c298b201cb1322689ea7 Mon Sep 17 00:00:00 2001 From: Arity-T Date: Tue, 10 Feb 2026 09:39:17 +0300 Subject: [PATCH] =?UTF-8?q?Error=20handler=20=D0=B4=D0=BB=D1=8F=20=D1=81?= =?UTF-8?q?=D0=B5=D1=82=D0=B5=D0=B2=D1=8B=D1=85=20=D0=BE=D1=88=D0=B8=D0=B1?= =?UTF-8?q?=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) 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()