Error handler для сетевых ошибок
This commit is contained in:
20
main.py
20
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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user