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