Error handler для сетевых ошибок

This commit is contained in:
2026-02-10 09:39:17 +03:00
parent f11e6ca826
commit b0d1e2b6c2

20
main.py
View File

@@ -1,7 +1,9 @@
from telegram.error import NetworkError
from telegram.ext import ( from telegram.ext import (
ApplicationBuilder, ApplicationBuilder,
CallbackQueryHandler, CallbackQueryHandler,
CommandHandler, CommandHandler,
ContextTypes,
MessageHandler, MessageHandler,
filters, filters,
) )
@@ -41,6 +43,21 @@ from src.handlers import (
from src.logger import logger 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: def main() -> None:
"""Точка входа приложения.""" """Точка входа приложения."""
logger.info("Запуск бота...") logger.info("Запуск бота...")
@@ -125,6 +142,9 @@ def main() -> None:
MessageHandler(filters.TEXT & ~filters.COMMAND, handle_text_message) MessageHandler(filters.TEXT & ~filters.COMMAND, handle_text_message)
) )
# Error handler
app.add_error_handler(error_handler)
logger.info("Бот запущен") logger.info("Бот запущен")
app.run_polling() app.run_polling()