This commit is contained in:
+43
-43
@@ -126,53 +126,53 @@ async def publish_to_tg(vk_post_id):
|
||||
|
||||
try:
|
||||
# Проверяем наличие организационного хештега
|
||||
is_org_message = has_org_tag(post['text'])
|
||||
|
||||
# Предварительный расчет строки ссылок (с запасом 20 символов для message_id)
|
||||
placeholder_message_id = '0' * 20 # Заполнитель для message_id
|
||||
|
||||
# Формируем ссылки
|
||||
links = []
|
||||
|
||||
# Ссылка на оригинал в ВК
|
||||
if post['vk_post_url'] and (post['vk_post_url'].startswith('http://') or post['vk_post_url'].startswith('https://')):
|
||||
links.append(f'<a href="{post["vk_post_url"]}">Оригинал в ВК</a>')
|
||||
|
||||
# Ссылка на подписку (только для событий и если включен бот подписки)
|
||||
if post['is_event'] and USE_SUBSCRIPTION_BOT:
|
||||
links.append(f'<a href="https://t.me/{RESPONDER_BOT_NAME}?start=post_{placeholder_message_id}">🔜 Подписка</a>')
|
||||
|
||||
# Формируем строку ссылок
|
||||
links_line = " | ".join(links) if links else ""
|
||||
links_line_length = len(links_line)
|
||||
is_org_message = has_org_tag(post['text'])
|
||||
|
||||
# Предварительный расчет строки ссылок (с запасом 20 символов для message_id)
|
||||
placeholder_message_id = '0' * 20 # Заполнитель для message_id
|
||||
|
||||
# Формируем ссылки
|
||||
links = []
|
||||
|
||||
# Ссылка на оригинал в ВК
|
||||
if post['vk_post_url'] and (post['vk_post_url'].startswith('http://') or post['vk_post_url'].startswith('https://')):
|
||||
links.append(f'<a href="{post["vk_post_url"]}">Оригинал в ВК</a>')
|
||||
|
||||
# Ссылка на подписку (только для событий и если включен бот подписки)
|
||||
if post['is_event'] and USE_SUBSCRIPTION_BOT:
|
||||
links.append(f'<a href="https://t.me/{RESPONDER_BOT_NAME}?start=post_{placeholder_message_id}">🔜 Подписка</a>')
|
||||
|
||||
# Формируем строку ссылок
|
||||
links_line = " | ".join(links) if links else ""
|
||||
links_line_length = len(links_line)
|
||||
|
||||
# Определяем максимальную длину в зависимости от типа сообщения
|
||||
# Если это организационное сообщение, используем текстовый лимит
|
||||
image_url = post['image_url']
|
||||
has_image = image_url and image_url.strip() and not is_org_message
|
||||
max_length = MAX_CAPTION_LENGTH if has_image else MAX_TEXT_LENGTH
|
||||
# Определяем максимальную длину в зависимости от типа сообщения
|
||||
# Если это организационное сообщение, используем текстовый лимит
|
||||
image_url = post['image_url']
|
||||
has_image = image_url and image_url.strip() and not is_org_message
|
||||
max_length = MAX_CAPTION_LENGTH if has_image else MAX_TEXT_LENGTH
|
||||
|
||||
# Вычисляем доступную длину для текста
|
||||
available_length = max_length - links_line_length - 2 # -2 для символов переноса строки
|
||||
if available_length < 0:
|
||||
available_length = 0
|
||||
# Вычисляем доступную длину для текста
|
||||
available_length = max_length - links_line_length - 2 # -2 для символов переноса строки
|
||||
if available_length < 0:
|
||||
available_length = 0
|
||||
|
||||
# Получаем обработанный текст с учетом доступной длины
|
||||
text = get_event_text(post['text'], available_length) if post['text'] else ""
|
||||
|
||||
# Логирование отформатированного текста для отладки (только если включено)
|
||||
if LOG_DEBUG_DATA:
|
||||
logger.info(f"Начинаем форматирование текста для записи VK ID {vk_post_id}, доступная длина: {available_length}")
|
||||
logger.info(f"=== Отформатированный текст для записи VK ID {vk_post_id} ===")
|
||||
logger.info(f"Длина текста: {len(text)}")
|
||||
logger.info(f"Текст (repr): {repr(text)}")
|
||||
logger.info(f"Текст (содержимое):")
|
||||
# Выводим текст построчно для лучшей читаемости в логе
|
||||
for i, line in enumerate(text.split('\n'), 1):
|
||||
logger.info(f" Строка {i}: {repr(line)}")
|
||||
logger.info(f"=== Конец отформатированного текста ===")
|
||||
# Получаем обработанный текст с учетом доступной длины
|
||||
text = get_event_text(post['text'], available_length) if post['text'] else ""
|
||||
|
||||
# Логирование отформатированного текста для отладки (только если включено)
|
||||
if LOG_DEBUG_DATA:
|
||||
logger.info(f"Начинаем форматирование текста для записи VK ID {vk_post_id}, доступная длина: {available_length}")
|
||||
logger.info(f"=== Отформатированный текст для записи VK ID {vk_post_id} ===")
|
||||
logger.info(f"Длина текста: {len(text)}")
|
||||
logger.info(f"Текст (repr): {repr(text)}")
|
||||
logger.info(f"Текст (содержимое):")
|
||||
# Выводим текст построчно для лучшей читаемости в логе
|
||||
for i, line in enumerate(text.split('\n'), 1):
|
||||
logger.info(f" Строка {i}: {repr(line)}")
|
||||
logger.info(f"=== Конец отформатированного текста ===")
|
||||
|
||||
# Публикация первоначального сообщения без ссылок
|
||||
# Публикация первоначального сообщения без ссылок
|
||||
send_photo_url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendPhoto"
|
||||
send_message_url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user