From 26d12a4758f2505d196d08589e602ebf62aa5632 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Sun, 21 Dec 2025 19:37:24 +0300 Subject: [PATCH] =?UTF-8?q?[=D0=92=D0=9E=D0=9B=D0=9A]=20=D0=BA=D0=BE=D1=80?= =?UTF-8?q?=D1=80=D0=B5=D0=BA=D1=86=D0=B8=D1=8F=20=D1=81=D0=B8=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=D0=BA=D1=81=D0=B8=D1=81=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tg_publish.py | 86 +++++++++++++++++++++++++-------------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/tg_publish.py b/tg_publish.py index b71b018..9d6b3ad 100644 --- a/tg_publish.py +++ b/tg_publish.py @@ -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'Оригинал в ВК') - - # Ссылка на подписку (только для событий и если включен бот подписки) - if post['is_event'] and USE_SUBSCRIPTION_BOT: - links.append(f'🔜 Подписка') - - # Формируем строку ссылок - 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'Оригинал в ВК') + + # Ссылка на подписку (только для событий и если включен бот подписки) + if post['is_event'] and USE_SUBSCRIPTION_BOT: + links.append(f'🔜 Подписка') + + # Формируем строку ссылок + 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"