From cca4afd9a51b8b0e2ab2d2c1971f68240eaf0e2a Mon Sep 17 00:00:00 2001 From: gitadmin Date: Fri, 26 Dec 2025 01:33:43 +0300 Subject: [PATCH] =?UTF-8?q?[=D0=92=D0=9E=D0=9B=D0=9A]=20=D1=84=D0=B8=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D0=BC=20=D1=80=D0=B5=D0=B4=D0=B0=D0=BA=D1=82=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B1=D0=B5=D0=B7?= =?UTF-8?q?=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D1=82=D0=B5=D0=BA=D1=81=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- evtg_publish.py | 55 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/evtg_publish.py b/evtg_publish.py index 47853d6..6278efb 100644 --- a/evtg_publish.py +++ b/evtg_publish.py @@ -364,6 +364,11 @@ async def tg_post_event(httpx_client, event_data): else: final_text = initial_text + # Проверяем, изменился ли текст. Если нет - не редактируем сообщение + if final_text == initial_text: + logger.info(f"Финальный текст идентичен исходному для события {event_data['number']}, редактирование не требуется") + return message_id + await asyncio.sleep(2) # Редактируем сообщение, добавляя ссылки @@ -386,13 +391,27 @@ async def tg_post_event(httpx_client, event_data): if edit_result.get('ok'): logger.info(f"Подпись успешно отредактирована для события {event_data['number']}") else: - # Ошибка при редактировании подписи - пробуем редактировать текст + # Ошибка при редактировании подписи error_code = edit_result.get('error_code') + error_description = edit_result.get('description', 'Unknown error') + # Обрабатываем ошибку 400 (сообщение не изменено) как предупреждение + if error_code == 400 and "not modified" in error_description.lower(): + logger.info(f"Сообщение для события {event_data['number']} не требует редактирования (текст идентичен)") + return message_id if error_code == 429: retry_after = edit_result.get('parameters', {}).get('retry_after', 60) raise Exception(f"RetryAfter:{retry_after}") - raise Exception(f"API error: {edit_result.get('description', 'Unknown error')}") + raise Exception(f"API error: {error_description}") else: + if edit_caption_response.status_code == 400: + try: + error_data = edit_caption_response.json() + error_description = error_data.get('description', '') + if "not modified" in error_description.lower(): + logger.info(f"Сообщение для события {event_data['number']} не требует редактирования (текст идентичен)") + return message_id + except: + pass if edit_caption_response.status_code == 429: retry_after = 60 try: @@ -443,11 +462,25 @@ async def tg_post_event(httpx_client, event_data): logger.info(f"Текст успешно отредактирован для события {event_data['number']}") else: error_code = edit_result.get('error_code') + error_description = edit_result.get('description', 'Unknown error') + # Обрабатываем ошибку 400 (сообщение не изменено) как предупреждение + if error_code == 400 and "not modified" in error_description.lower(): + logger.info(f"Сообщение для события {event_data['number']} не требует редактирования (текст идентичен)") + return message_id if error_code == 429: retry_after = edit_result.get('parameters', {}).get('retry_after', 60) raise Exception(f"RetryAfter:{retry_after}") - raise Exception(f"API error: {edit_result.get('description', 'Unknown error')}") + raise Exception(f"API error: {error_description}") else: + if edit_text_response.status_code == 400: + try: + error_data = edit_text_response.json() + error_description = error_data.get('description', '') + if "not modified" in error_description.lower(): + logger.info(f"Сообщение для события {event_data['number']} не требует редактирования (текст идентичен)") + return message_id + except: + pass if edit_text_response.status_code == 429: retry_after = 60 try: @@ -492,11 +525,25 @@ async def tg_post_event(httpx_client, event_data): logger.info(f"Текст успешно отредактирован для события {event_data['number']}") else: error_code = edit_result.get('error_code') + error_description = edit_result.get('description', 'Unknown error') + # Обрабатываем ошибку 400 (сообщение не изменено) как предупреждение + if error_code == 400 and "not modified" in error_description.lower(): + logger.info(f"Сообщение для события {event_data['number']} не требует редактирования (текст идентичен)") + return message_id if error_code == 429: retry_after = edit_result.get('parameters', {}).get('retry_after', 60) raise Exception(f"RetryAfter:{retry_after}") - raise Exception(f"API error: {edit_result.get('description', 'Unknown error')}") + raise Exception(f"API error: {error_description}") else: + if edit_text_response.status_code == 400: + try: + error_data = edit_text_response.json() + error_description = error_data.get('description', '') + if "not modified" in error_description.lower(): + logger.info(f"Сообщение для события {event_data['number']} не требует редактирования (текст идентичен)") + return message_id + except: + pass if edit_text_response.status_code == 429: retry_after = 60 try: