This commit is contained in:
+112
-100
@@ -1,5 +1,6 @@
|
|||||||
import os
|
import os
|
||||||
import logging
|
import logging
|
||||||
|
import httpx
|
||||||
import asyncio
|
import asyncio
|
||||||
import time
|
import time
|
||||||
import sys
|
import sys
|
||||||
@@ -131,17 +132,21 @@ async def test_telegram_publish():
|
|||||||
logger.info(final_text)
|
logger.info(final_text)
|
||||||
logger.info("=" * 80)
|
logger.info("=" * 80)
|
||||||
|
|
||||||
# Создаем бота с отключенным HTTP/2
|
# Создаем httpx клиент и бота с отключенным HTTP/2
|
||||||
|
httpx_client = None
|
||||||
try:
|
try:
|
||||||
|
# Создаём клиент БЕЗ HTTP/2
|
||||||
|
logger.info("Создание httpx клиента с отключенным HTTP/2...")
|
||||||
|
httpx_client = httpx.AsyncClient(
|
||||||
|
http2=False, # ← отключаем HTTP/2
|
||||||
|
timeout=20.0, # явный таймаут
|
||||||
|
follow_redirects=True
|
||||||
|
)
|
||||||
|
logger.info("httpx клиент успешно создан с http2=False")
|
||||||
|
|
||||||
|
# Создаем бота с отключенным HTTP/2
|
||||||
logger.info("Создание объекта Bot с отключенным HTTP/2...")
|
logger.info("Создание объекта Bot с отключенным HTTP/2...")
|
||||||
logger.info("Настройка HTTPXRequest с явным указанием HTTP/1.1...")
|
bot = Bot(token=POSTER_BOT_TOKEN, client=httpx_client)
|
||||||
|
|
||||||
# Создаем HTTPXRequest с явным указанием HTTP/1.1 (отключаем HTTP/2)
|
|
||||||
request = HTTPXRequest(http_version="1.1")
|
|
||||||
logger.info("HTTPXRequest создан с http_version='1.1' (HTTP/2 отключен)")
|
|
||||||
|
|
||||||
# Создаем Bot с кастомным request
|
|
||||||
bot = Bot(token=POSTER_BOT_TOKEN, request=request)
|
|
||||||
logger.info("Объект Bot успешно создан с отключенным HTTP/2")
|
logger.info("Объект Bot успешно создан с отключенным HTTP/2")
|
||||||
|
|
||||||
# Получаем информацию о боте
|
# Получаем информацию о боте
|
||||||
@@ -203,98 +208,105 @@ async def test_telegram_publish():
|
|||||||
import traceback
|
import traceback
|
||||||
logger.error(f"Трассировка стека:\n{traceback.format_exc()}")
|
logger.error(f"Трассировка стека:\n{traceback.format_exc()}")
|
||||||
|
|
||||||
except Exception as e:
|
# Публикуем тестовое сообщение
|
||||||
logger.error(f"ОШИБКА при создании объекта Bot: {e}")
|
try:
|
||||||
logger.error(f" Тип ошибки: {type(e).__name__}")
|
logger.info("=" * 80)
|
||||||
logger.error(f" Все атрибуты: {vars(e)}")
|
logger.info("ПОПЫТКА ОТПРАВКИ ТЕСТОВОГО СООБЩЕНИЯ")
|
||||||
return False
|
logger.info("=" * 80)
|
||||||
|
logger.info(f"Параметры запроса:")
|
||||||
|
logger.info(f" chat_id: {CHANNEL_ID}")
|
||||||
|
logger.info(f" text_length: {len(final_text)}")
|
||||||
|
logger.info(f" parse_mode: HTML")
|
||||||
|
logger.info(f" disable_notification: {PUBLISH_SILENTLY}")
|
||||||
|
logger.info(f" disable_web_page_preview: True")
|
||||||
|
|
||||||
|
start_time = datetime.now()
|
||||||
|
message = await bot.send_message(
|
||||||
|
chat_id=CHANNEL_ID,
|
||||||
|
text=final_text,
|
||||||
|
parse_mode="HTML",
|
||||||
|
disable_notification=PUBLISH_SILENTLY,
|
||||||
|
disable_web_page_preview=True
|
||||||
|
)
|
||||||
|
end_time = datetime.now()
|
||||||
|
duration = (end_time - start_time).total_seconds()
|
||||||
|
|
||||||
|
logger.info("=" * 80)
|
||||||
|
logger.info("СООБЩЕНИЕ УСПЕШНО ОТПРАВЛЕНО!")
|
||||||
|
logger.info("=" * 80)
|
||||||
|
logger.info(f"Message ID: {message.message_id}")
|
||||||
|
logger.info(f"Chat ID: {message.chat.id}")
|
||||||
|
logger.info(f"Chat type: {message.chat.type}")
|
||||||
|
logger.info(f"Chat title: {message.chat.title if hasattr(message.chat, 'title') else 'N/A'}")
|
||||||
|
logger.info(f"Время отправки: {duration:.2f} секунд")
|
||||||
|
logger.info(f"Дата сообщения: {message.date}")
|
||||||
|
logger.info("=" * 80)
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
except TimedOut as e:
|
||||||
|
logger.error("=" * 80)
|
||||||
|
logger.error("ТАЙМАУТ ПРИ ОТПРАВКЕ СООБЩЕНИЯ!")
|
||||||
|
logger.error("=" * 80)
|
||||||
|
logger.error(f"Тип ошибки: {type(e).__name__}")
|
||||||
|
logger.error(f"Сообщение: {str(e)}")
|
||||||
|
logger.error(f"Все атрибуты ошибки: {vars(e)}")
|
||||||
|
logger.error(f"Полное представление: {repr(e)}")
|
||||||
|
logger.error(f"Параметры запроса:")
|
||||||
|
logger.error(f" chat_id: {CHANNEL_ID}")
|
||||||
|
logger.error(f" text_length: {len(final_text)}")
|
||||||
|
logger.error(f" parse_mode: HTML")
|
||||||
|
return False
|
||||||
|
|
||||||
|
except RetryAfter as e:
|
||||||
|
logger.error("=" * 80)
|
||||||
|
logger.error("ОШИБКА FLOODWAIT (429) ПРИ ОТПРАВКЕ СООБЩЕНИЯ!")
|
||||||
|
logger.error("=" * 80)
|
||||||
|
logger.error(f"Тип ошибки: {type(e).__name__}")
|
||||||
|
logger.error(f"Сообщение: {str(e)}")
|
||||||
|
logger.error(f"Необходимо подождать: {e.retry_after} секунд")
|
||||||
|
logger.error(f"Все атрибуты ошибки: {vars(e)}")
|
||||||
|
logger.error(f"Полное представление: {repr(e)}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
except TelegramError as e:
|
||||||
|
logger.error("=" * 80)
|
||||||
|
logger.error("ОШИБКА TELEGRAM ПРИ ОТПРАВКЕ СООБЩЕНИЯ!")
|
||||||
|
logger.error("=" * 80)
|
||||||
|
logger.error(f"Тип ошибки: {type(e).__name__}")
|
||||||
|
logger.error(f"Сообщение: {str(e)}")
|
||||||
|
logger.error(f"Все атрибуты ошибки: {vars(e)}")
|
||||||
|
logger.error(f"Полное представление: {repr(e)}")
|
||||||
|
logger.error(f"Параметры запроса:")
|
||||||
|
logger.error(f" chat_id: {CHANNEL_ID}")
|
||||||
|
logger.error(f" text_length: {len(final_text)}")
|
||||||
|
logger.error(f" parse_mode: HTML")
|
||||||
|
return False
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.error("=" * 80)
|
||||||
|
logger.error("НЕОЖИДАННАЯ ОШИБКА ПРИ ОТПРАВКЕ СООБЩЕНИЯ!")
|
||||||
|
logger.error("=" * 80)
|
||||||
|
logger.error(f"Тип ошибки: {type(e).__name__}")
|
||||||
|
logger.error(f"Сообщение: {str(e)}")
|
||||||
|
logger.error(f"Все атрибуты ошибки: {vars(e) if hasattr(e, '__dict__') else 'N/A'}")
|
||||||
|
logger.error(f"Полное представление: {repr(e)}")
|
||||||
|
import traceback
|
||||||
|
logger.error(f"Трассировка стека:\n{traceback.format_exc()}")
|
||||||
|
return False
|
||||||
|
|
||||||
# Публикуем тестовое сообщение
|
finally:
|
||||||
try:
|
# Закрываем httpx клиент
|
||||||
logger.info("=" * 80)
|
if httpx_client is not None:
|
||||||
logger.info("ПОПЫТКА ОТПРАВКИ ТЕСТОВОГО СООБЩЕНИЯ")
|
try:
|
||||||
logger.info("=" * 80)
|
logger.info("Закрытие httpx клиента...")
|
||||||
logger.info(f"Параметры запроса:")
|
await httpx_client.aclose()
|
||||||
logger.info(f" chat_id: {CHANNEL_ID}")
|
logger.info("httpx клиент успешно закрыт")
|
||||||
logger.info(f" text_length: {len(final_text)}")
|
except Exception as e:
|
||||||
logger.info(f" parse_mode: HTML")
|
logger.error(f"Ошибка при закрытии httpx клиента: {e}")
|
||||||
logger.info(f" disable_notification: {PUBLISH_SILENTLY}")
|
logger.error(f" Тип ошибки: {type(e).__name__}")
|
||||||
logger.info(f" disable_web_page_preview: True")
|
import traceback
|
||||||
|
logger.error(f"Трассировка стека:\n{traceback.format_exc()}")
|
||||||
start_time = datetime.now()
|
|
||||||
message = await bot.send_message(
|
|
||||||
chat_id=CHANNEL_ID,
|
|
||||||
text=final_text,
|
|
||||||
parse_mode="HTML",
|
|
||||||
disable_notification=PUBLISH_SILENTLY,
|
|
||||||
disable_web_page_preview=True
|
|
||||||
)
|
|
||||||
end_time = datetime.now()
|
|
||||||
duration = (end_time - start_time).total_seconds()
|
|
||||||
|
|
||||||
logger.info("=" * 80)
|
|
||||||
logger.info("СООБЩЕНИЕ УСПЕШНО ОТПРАВЛЕНО!")
|
|
||||||
logger.info("=" * 80)
|
|
||||||
logger.info(f"Message ID: {message.message_id}")
|
|
||||||
logger.info(f"Chat ID: {message.chat.id}")
|
|
||||||
logger.info(f"Chat type: {message.chat.type}")
|
|
||||||
logger.info(f"Chat title: {message.chat.title if hasattr(message.chat, 'title') else 'N/A'}")
|
|
||||||
logger.info(f"Время отправки: {duration:.2f} секунд")
|
|
||||||
logger.info(f"Дата сообщения: {message.date}")
|
|
||||||
logger.info("=" * 80)
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
except TimedOut as e:
|
|
||||||
logger.error("=" * 80)
|
|
||||||
logger.error("ТАЙМАУТ ПРИ ОТПРАВКЕ СООБЩЕНИЯ!")
|
|
||||||
logger.error("=" * 80)
|
|
||||||
logger.error(f"Тип ошибки: {type(e).__name__}")
|
|
||||||
logger.error(f"Сообщение: {str(e)}")
|
|
||||||
logger.error(f"Все атрибуты ошибки: {vars(e)}")
|
|
||||||
logger.error(f"Полное представление: {repr(e)}")
|
|
||||||
logger.error(f"Параметры запроса:")
|
|
||||||
logger.error(f" chat_id: {CHANNEL_ID}")
|
|
||||||
logger.error(f" text_length: {len(final_text)}")
|
|
||||||
logger.error(f" parse_mode: HTML")
|
|
||||||
return False
|
|
||||||
|
|
||||||
except RetryAfter as e:
|
|
||||||
logger.error("=" * 80)
|
|
||||||
logger.error("ОШИБКА FLOODWAIT (429) ПРИ ОТПРАВКЕ СООБЩЕНИЯ!")
|
|
||||||
logger.error("=" * 80)
|
|
||||||
logger.error(f"Тип ошибки: {type(e).__name__}")
|
|
||||||
logger.error(f"Сообщение: {str(e)}")
|
|
||||||
logger.error(f"Необходимо подождать: {e.retry_after} секунд")
|
|
||||||
logger.error(f"Все атрибуты ошибки: {vars(e)}")
|
|
||||||
logger.error(f"Полное представление: {repr(e)}")
|
|
||||||
return False
|
|
||||||
|
|
||||||
except TelegramError as e:
|
|
||||||
logger.error("=" * 80)
|
|
||||||
logger.error("ОШИБКА TELEGRAM ПРИ ОТПРАВКЕ СООБЩЕНИЯ!")
|
|
||||||
logger.error("=" * 80)
|
|
||||||
logger.error(f"Тип ошибки: {type(e).__name__}")
|
|
||||||
logger.error(f"Сообщение: {str(e)}")
|
|
||||||
logger.error(f"Все атрибуты ошибки: {vars(e)}")
|
|
||||||
logger.error(f"Полное представление: {repr(e)}")
|
|
||||||
logger.error(f"Параметры запроса:")
|
|
||||||
logger.error(f" chat_id: {CHANNEL_ID}")
|
|
||||||
logger.error(f" text_length: {len(final_text)}")
|
|
||||||
logger.error(f" parse_mode: HTML")
|
|
||||||
return False
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
logger.error("=" * 80)
|
|
||||||
logger.error("НЕОЖИДАННАЯ ОШИБКА ПРИ ОТПРАВКЕ СООБЩЕНИЯ!")
|
|
||||||
logger.error("=" * 80)
|
|
||||||
logger.error(f"Тип ошибки: {type(e).__name__}")
|
|
||||||
logger.error(f"Сообщение: {str(e)}")
|
|
||||||
logger.error(f"Все атрибуты ошибки: {vars(e) if hasattr(e, '__dict__') else 'N/A'}")
|
|
||||||
logger.error(f"Полное представление: {repr(e)}")
|
|
||||||
import traceback
|
|
||||||
logger.error(f"Трассировка стека:\n{traceback.format_exc()}")
|
|
||||||
return False
|
|
||||||
|
|
||||||
async def main():
|
async def main():
|
||||||
"""Главная функция"""
|
"""Главная функция"""
|
||||||
|
|||||||
Reference in New Issue
Block a user