This commit is contained in:
+119
-3
@@ -6,7 +6,7 @@ import time
|
|||||||
import html
|
import html
|
||||||
from datetime import datetime, timezone, timedelta
|
from datetime import datetime, timezone, timedelta
|
||||||
from telegram import Bot, InlineKeyboardMarkup, InlineKeyboardButton
|
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 dotenv import load_dotenv
|
||||||
from formatter import get_event_text
|
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
|
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:
|
if has_image:
|
||||||
try:
|
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(
|
message = await bot.send_photo(
|
||||||
chat_id=CHANNEL_ID,
|
chat_id=CHANNEL_ID,
|
||||||
photo=image_url,
|
photo=image_url,
|
||||||
@@ -146,6 +158,20 @@ async def tg_post_event(bot, event_data):
|
|||||||
parse_mode="HTML",
|
parse_mode="HTML",
|
||||||
disable_notification=PUBLISH_SILENTLY
|
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:
|
except TelegramError as e:
|
||||||
logger.warning(f"Не удалось отправить изображение для события номер {event_data['number']}: {e}. Отправляем текстовое сообщение.")
|
logger.warning(f"Не удалось отправить изображение для события номер {event_data['number']}: {e}. Отправляем текстовое сообщение.")
|
||||||
logger.error(f"Полная информация об ошибке Telegram при отправке изображения для события {event_data['number']}:")
|
logger.error(f"Полная информация об ошибке Telegram при отправке изображения для события {event_data['number']}:")
|
||||||
@@ -153,6 +179,8 @@ async def tg_post_event(bot, event_data):
|
|||||||
logger.error(f" Сообщение: {str(e)}")
|
logger.error(f" Сообщение: {str(e)}")
|
||||||
logger.error(f" Все атрибуты ошибки: {vars(e)}")
|
logger.error(f" Все атрибуты ошибки: {vars(e)}")
|
||||||
logger.error(f" Полное представление: {repr(e)}")
|
logger.error(f" Полное представление: {repr(e)}")
|
||||||
|
logger.info(f"Попытка отправки текстового сообщения вместо фото для события {event_data['number']}")
|
||||||
|
try:
|
||||||
message = await bot.send_message(
|
message = await bot.send_message(
|
||||||
chat_id=CHANNEL_ID,
|
chat_id=CHANNEL_ID,
|
||||||
text=initial_text,
|
text=initial_text,
|
||||||
@@ -160,7 +188,22 @@ async def tg_post_event(bot, event_data):
|
|||||||
disable_notification=PUBLISH_SILENTLY,
|
disable_notification=PUBLISH_SILENTLY,
|
||||||
disable_web_page_preview=True # Отключаем предпросмотр ссылок
|
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:
|
else:
|
||||||
|
logger.info(f"Попытка отправки текстового сообщения для события {event_data['number']}: chat_id={CHANNEL_ID}, text_length={len(initial_text)}")
|
||||||
|
try:
|
||||||
message = await bot.send_message(
|
message = await bot.send_message(
|
||||||
chat_id=CHANNEL_ID,
|
chat_id=CHANNEL_ID,
|
||||||
text=initial_text,
|
text=initial_text,
|
||||||
@@ -168,6 +211,19 @@ async def tg_post_event(bot, event_data):
|
|||||||
disable_notification=PUBLISH_SILENTLY,
|
disable_notification=PUBLISH_SILENTLY,
|
||||||
disable_web_page_preview=True # Отключаем предпросмотр ссылок
|
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 сообщения для использования в ссылке подписки
|
# Получаем ID сообщения для использования в ссылке подписки
|
||||||
message_id = message.message_id
|
message_id = message.message_id
|
||||||
@@ -182,6 +238,7 @@ async def tg_post_event(bot, event_data):
|
|||||||
await asyncio.sleep(2)
|
await asyncio.sleep(2)
|
||||||
|
|
||||||
# Редактируем сообщение, добавляя ссылки
|
# Редактируем сообщение, добавляя ссылки
|
||||||
|
logger.info(f"Попытка редактирования сообщения для события {event_data['number']}: message_id={message_id}, final_text_length={len(final_text)}")
|
||||||
if has_image:
|
if has_image:
|
||||||
try:
|
try:
|
||||||
await bot.edit_message_caption(
|
await bot.edit_message_caption(
|
||||||
@@ -190,6 +247,20 @@ async def tg_post_event(bot, event_data):
|
|||||||
caption=final_text,
|
caption=final_text,
|
||||||
parse_mode="HTML"
|
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:
|
except TelegramError as e:
|
||||||
logger.warning(f"Не удалось отредактировать подпись для события номер {event_data['number']}: {e}. Пробуем отредактировать текстовое сообщение.")
|
logger.warning(f"Не удалось отредактировать подпись для события номер {event_data['number']}: {e}. Пробуем отредактировать текстовое сообщение.")
|
||||||
logger.error(f"Полная информация об ошибке Telegram при редактировании подписи для события {event_data['number']}:")
|
logger.error(f"Полная информация об ошибке Telegram при редактировании подписи для события {event_data['number']}:")
|
||||||
@@ -197,6 +268,8 @@ async def tg_post_event(bot, event_data):
|
|||||||
logger.error(f" Сообщение: {str(e)}")
|
logger.error(f" Сообщение: {str(e)}")
|
||||||
logger.error(f" Все атрибуты ошибки: {vars(e)}")
|
logger.error(f" Все атрибуты ошибки: {vars(e)}")
|
||||||
logger.error(f" Полное представление: {repr(e)}")
|
logger.error(f" Полное представление: {repr(e)}")
|
||||||
|
logger.info(f"Попытка редактирования текста вместо подписи для события {event_data['number']}")
|
||||||
|
try:
|
||||||
await bot.edit_message_text(
|
await bot.edit_message_text(
|
||||||
chat_id=CHANNEL_ID,
|
chat_id=CHANNEL_ID,
|
||||||
message_id=message_id,
|
message_id=message_id,
|
||||||
@@ -204,7 +277,22 @@ async def tg_post_event(bot, event_data):
|
|||||||
parse_mode="HTML",
|
parse_mode="HTML",
|
||||||
disable_web_page_preview=True # Отключаем предпросмотр ссылок
|
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:
|
else:
|
||||||
|
try:
|
||||||
await bot.edit_message_text(
|
await bot.edit_message_text(
|
||||||
chat_id=CHANNEL_ID,
|
chat_id=CHANNEL_ID,
|
||||||
message_id=message_id,
|
message_id=message_id,
|
||||||
@@ -212,6 +300,20 @@ async def tg_post_event(bot, event_data):
|
|||||||
parse_mode="HTML",
|
parse_mode="HTML",
|
||||||
disable_web_page_preview=True # Отключаем предпросмотр ссылок
|
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
|
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" Все атрибуты ошибки: {vars(e)}")
|
||||||
logger.error(f" Полное представление: {repr(e)}")
|
logger.error(f" Полное представление: {repr(e)}")
|
||||||
raise # Пробрасываем исключение выше для обработки на уровне цикла
|
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:
|
except TelegramError as e:
|
||||||
logger.error(f"Ошибка Telegram при публикации события номер {event_data['number']}: {e}")
|
logger.error(f"Ошибка Telegram при публикации события номер {event_data['number']}: {e}")
|
||||||
logger.error(f"Полная информация об ошибке Telegram для события {event_data['number']}:")
|
logger.error(f"Полная информация об ошибке Telegram для события {event_data['number']}:")
|
||||||
|
|||||||
Reference in New Issue
Block a user