This commit is contained in:
+135
-19
@@ -6,7 +6,7 @@ import time
|
||||
import html
|
||||
from datetime import datetime, timezone, timedelta
|
||||
from telegram import Bot, InlineKeyboardMarkup, InlineKeyboardButton
|
||||
from telegram.error import TelegramError, RetryAfter
|
||||
from telegram.error import TelegramError, RetryAfter, TimedOut
|
||||
from dotenv import load_dotenv
|
||||
from formatter import get_event_text
|
||||
|
||||
@@ -133,12 +133,24 @@ async def tg_post_event(bot, event_data):
|
||||
# Формируем первоначальный текст
|
||||
initial_text = f"{base_text}\n\n{about}" if about else base_text
|
||||
|
||||
# Логируем текст для отладки
|
||||
logger.info(f"Текст для публикации события номер {event_data['number']}: {initial_text}")
|
||||
# Логируем детальную информацию о данных для публикации
|
||||
logger.info(f"=== Детали публикации события номер {event_data['number']} ===")
|
||||
logger.info(f"Длина initial_text: {len(initial_text)} символов")
|
||||
logger.info(f"Длина base_text: {base_text_length} символов")
|
||||
logger.info(f"Длина about: {len(about)} символов")
|
||||
logger.info(f"Длина links_line_placeholder: {links_line_length} символов")
|
||||
logger.info(f"Максимальная длина (max_length): {max_length} символов")
|
||||
logger.info(f"Доступная длина для about: {available_length} символов")
|
||||
logger.info(f"Есть изображение: {has_image}")
|
||||
if has_image:
|
||||
logger.info(f"URL изображения: {image_url}")
|
||||
logger.info(f"Длина URL изображения: {len(image_url)} символов")
|
||||
logger.info(f"Текст для публикации: {initial_text[:200]}..." if len(initial_text) > 200 else f"Текст для публикации: {initial_text}")
|
||||
|
||||
# Публикация первоначального сообщения без ссылок
|
||||
if has_image:
|
||||
try:
|
||||
logger.info(f"Попытка отправки фото для события {event_data['number']}: chat_id={CHANNEL_ID}, caption_length={len(initial_text)}, image_url_length={len(image_url)}")
|
||||
message = await bot.send_photo(
|
||||
chat_id=CHANNEL_ID,
|
||||
photo=image_url,
|
||||
@@ -146,6 +158,20 @@ async def tg_post_event(bot, event_data):
|
||||
parse_mode="HTML",
|
||||
disable_notification=PUBLISH_SILENTLY
|
||||
)
|
||||
logger.info(f"Фото успешно отправлено для события {event_data['number']}, message_id={message.message_id}")
|
||||
except TimedOut as e:
|
||||
logger.error(f"ТАЙМАУТ при отправке изображения для события номер {event_data['number']}")
|
||||
logger.error(f"Полная диагностическая информация об ошибке TimedOut:")
|
||||
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" image_url: {image_url}")
|
||||
logger.error(f" caption_length: {len(initial_text)}")
|
||||
logger.error(f" parse_mode: HTML")
|
||||
raise
|
||||
except TelegramError as e:
|
||||
logger.warning(f"Не удалось отправить изображение для события номер {event_data['number']}: {e}. Отправляем текстовое сообщение.")
|
||||
logger.error(f"Полная информация об ошибке Telegram при отправке изображения для события {event_data['number']}:")
|
||||
@@ -153,6 +179,31 @@ async def tg_post_event(bot, event_data):
|
||||
logger.error(f" Сообщение: {str(e)}")
|
||||
logger.error(f" Все атрибуты ошибки: {vars(e)}")
|
||||
logger.error(f" Полное представление: {repr(e)}")
|
||||
logger.info(f"Попытка отправки текстового сообщения вместо фото для события {event_data['number']}")
|
||||
try:
|
||||
message = await bot.send_message(
|
||||
chat_id=CHANNEL_ID,
|
||||
text=initial_text,
|
||||
parse_mode="HTML",
|
||||
disable_notification=PUBLISH_SILENTLY,
|
||||
disable_web_page_preview=True # Отключаем предпросмотр ссылок
|
||||
)
|
||||
logger.info(f"Текстовое сообщение успешно отправлено для события {event_data['number']}, message_id={message.message_id}")
|
||||
except TimedOut as e:
|
||||
logger.error(f"ТАЙМАУТ при отправке текстового сообщения для события номер {event_data['number']}")
|
||||
logger.error(f"Полная диагностическая информация об ошибке TimedOut:")
|
||||
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(initial_text)}")
|
||||
logger.error(f" parse_mode: HTML")
|
||||
raise
|
||||
else:
|
||||
logger.info(f"Попытка отправки текстового сообщения для события {event_data['number']}: chat_id={CHANNEL_ID}, text_length={len(initial_text)}")
|
||||
try:
|
||||
message = await bot.send_message(
|
||||
chat_id=CHANNEL_ID,
|
||||
text=initial_text,
|
||||
@@ -160,14 +211,19 @@ async def tg_post_event(bot, event_data):
|
||||
disable_notification=PUBLISH_SILENTLY,
|
||||
disable_web_page_preview=True # Отключаем предпросмотр ссылок
|
||||
)
|
||||
else:
|
||||
message = await bot.send_message(
|
||||
chat_id=CHANNEL_ID,
|
||||
text=initial_text,
|
||||
parse_mode="HTML",
|
||||
disable_notification=PUBLISH_SILENTLY,
|
||||
disable_web_page_preview=True # Отключаем предпросмотр ссылок
|
||||
)
|
||||
logger.info(f"Текстовое сообщение успешно отправлено для события {event_data['number']}, message_id={message.message_id}")
|
||||
except TimedOut as e:
|
||||
logger.error(f"ТАЙМАУТ при отправке текстового сообщения для события номер {event_data['number']}")
|
||||
logger.error(f"Полная диагностическая информация об ошибке TimedOut:")
|
||||
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(initial_text)}")
|
||||
logger.error(f" parse_mode: HTML")
|
||||
raise
|
||||
|
||||
# Получаем ID сообщения для использования в ссылке подписки
|
||||
message_id = message.message_id
|
||||
@@ -182,6 +238,7 @@ async def tg_post_event(bot, event_data):
|
||||
await asyncio.sleep(2)
|
||||
|
||||
# Редактируем сообщение, добавляя ссылки
|
||||
logger.info(f"Попытка редактирования сообщения для события {event_data['number']}: message_id={message_id}, final_text_length={len(final_text)}")
|
||||
if has_image:
|
||||
try:
|
||||
await bot.edit_message_caption(
|
||||
@@ -190,6 +247,20 @@ async def tg_post_event(bot, event_data):
|
||||
caption=final_text,
|
||||
parse_mode="HTML"
|
||||
)
|
||||
logger.info(f"Подпись успешно отредактирована для события {event_data['number']}")
|
||||
except TimedOut as e:
|
||||
logger.error(f"ТАЙМАУТ при редактировании подписи для события номер {event_data['number']}")
|
||||
logger.error(f"Полная диагностическая информация об ошибке TimedOut:")
|
||||
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" message_id: {message_id}")
|
||||
logger.error(f" caption_length: {len(final_text)}")
|
||||
logger.error(f" parse_mode: HTML")
|
||||
raise
|
||||
except TelegramError as e:
|
||||
logger.warning(f"Не удалось отредактировать подпись для события номер {event_data['number']}: {e}. Пробуем отредактировать текстовое сообщение.")
|
||||
logger.error(f"Полная информация об ошибке Telegram при редактировании подписи для события {event_data['number']}:")
|
||||
@@ -197,6 +268,31 @@ async def tg_post_event(bot, event_data):
|
||||
logger.error(f" Сообщение: {str(e)}")
|
||||
logger.error(f" Все атрибуты ошибки: {vars(e)}")
|
||||
logger.error(f" Полное представление: {repr(e)}")
|
||||
logger.info(f"Попытка редактирования текста вместо подписи для события {event_data['number']}")
|
||||
try:
|
||||
await bot.edit_message_text(
|
||||
chat_id=CHANNEL_ID,
|
||||
message_id=message_id,
|
||||
text=final_text,
|
||||
parse_mode="HTML",
|
||||
disable_web_page_preview=True # Отключаем предпросмотр ссылок
|
||||
)
|
||||
logger.info(f"Текст успешно отредактирован для события {event_data['number']}")
|
||||
except TimedOut as e:
|
||||
logger.error(f"ТАЙМАУТ при редактировании текста для события номер {event_data['number']}")
|
||||
logger.error(f"Полная диагностическая информация об ошибке TimedOut:")
|
||||
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" message_id: {message_id}")
|
||||
logger.error(f" text_length: {len(final_text)}")
|
||||
logger.error(f" parse_mode: HTML")
|
||||
raise
|
||||
else:
|
||||
try:
|
||||
await bot.edit_message_text(
|
||||
chat_id=CHANNEL_ID,
|
||||
message_id=message_id,
|
||||
@@ -204,14 +300,20 @@ async def tg_post_event(bot, event_data):
|
||||
parse_mode="HTML",
|
||||
disable_web_page_preview=True # Отключаем предпросмотр ссылок
|
||||
)
|
||||
else:
|
||||
await bot.edit_message_text(
|
||||
chat_id=CHANNEL_ID,
|
||||
message_id=message_id,
|
||||
text=final_text,
|
||||
parse_mode="HTML",
|
||||
disable_web_page_preview=True # Отключаем предпросмотр ссылок
|
||||
)
|
||||
logger.info(f"Текст успешно отредактирован для события {event_data['number']}")
|
||||
except TimedOut as e:
|
||||
logger.error(f"ТАЙМАУТ при редактировании текста для события номер {event_data['number']}")
|
||||
logger.error(f"Полная диагностическая информация об ошибке TimedOut:")
|
||||
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" message_id: {message_id}")
|
||||
logger.error(f" text_length: {len(final_text)}")
|
||||
logger.error(f" parse_mode: HTML")
|
||||
raise
|
||||
|
||||
return message_id # Возвращаем только message_id
|
||||
|
||||
@@ -225,6 +327,20 @@ async def tg_post_event(bot, event_data):
|
||||
logger.error(f" Все атрибуты ошибки: {vars(e)}")
|
||||
logger.error(f" Полное представление: {repr(e)}")
|
||||
raise # Пробрасываем исключение выше для обработки на уровне цикла
|
||||
except TimedOut as e:
|
||||
logger.error(f"ТАЙМАУТ при публикации события номер {event_data['number']}")
|
||||
logger.error(f"Полная диагностическая информация об ошибке TimedOut:")
|
||||
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" number: {event_data.get('number')}")
|
||||
logger.error(f" has_image: {bool(event_data.get('about_social_picture'))}")
|
||||
logger.error(f" image_url_length: {len(event_data.get('about_social_picture', '') or '')}")
|
||||
logger.error(f" initial_text_length: {len(initial_text) if 'initial_text' in locals() else 'N/A'}")
|
||||
logger.error(f" final_text_length: {len(final_text) if 'final_text' in locals() else 'N/A'}")
|
||||
return None
|
||||
except TelegramError as e:
|
||||
logger.error(f"Ошибка Telegram при публикации события номер {event_data['number']}: {e}")
|
||||
logger.error(f"Полная информация об ошибке Telegram для события {event_data['number']}:")
|
||||
|
||||
Reference in New Issue
Block a user