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: