[ВОЛК] фиксим редактирование без изменения текста
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2025-12-26 01:33:43 +03:00
parent 33068735b5
commit cca4afd9a5
+51 -4
View File
@@ -364,6 +364,11 @@ async def tg_post_event(httpx_client, event_data):
else: else:
final_text = initial_text final_text = initial_text
# Проверяем, изменился ли текст. Если нет - не редактируем сообщение
if final_text == initial_text:
logger.info(f"Финальный текст идентичен исходному для события {event_data['number']}, редактирование не требуется")
return message_id
await asyncio.sleep(2) await asyncio.sleep(2)
# Редактируем сообщение, добавляя ссылки # Редактируем сообщение, добавляя ссылки
@@ -386,13 +391,27 @@ async def tg_post_event(httpx_client, event_data):
if edit_result.get('ok'): if edit_result.get('ok'):
logger.info(f"Подпись успешно отредактирована для события {event_data['number']}") logger.info(f"Подпись успешно отредактирована для события {event_data['number']}")
else: else:
# Ошибка при редактировании подписи - пробуем редактировать текст # Ошибка при редактировании подписи
error_code = edit_result.get('error_code') 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: if error_code == 429:
retry_after = edit_result.get('parameters', {}).get('retry_after', 60) retry_after = edit_result.get('parameters', {}).get('retry_after', 60)
raise Exception(f"RetryAfter:{retry_after}") 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: 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: if edit_caption_response.status_code == 429:
retry_after = 60 retry_after = 60
try: try:
@@ -443,11 +462,25 @@ async def tg_post_event(httpx_client, event_data):
logger.info(f"Текст успешно отредактирован для события {event_data['number']}") logger.info(f"Текст успешно отредактирован для события {event_data['number']}")
else: else:
error_code = edit_result.get('error_code') 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: if error_code == 429:
retry_after = edit_result.get('parameters', {}).get('retry_after', 60) retry_after = edit_result.get('parameters', {}).get('retry_after', 60)
raise Exception(f"RetryAfter:{retry_after}") 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: 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: if edit_text_response.status_code == 429:
retry_after = 60 retry_after = 60
try: try:
@@ -492,11 +525,25 @@ async def tg_post_event(httpx_client, event_data):
logger.info(f"Текст успешно отредактирован для события {event_data['number']}") logger.info(f"Текст успешно отредактирован для события {event_data['number']}")
else: else:
error_code = edit_result.get('error_code') 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: if error_code == 429:
retry_after = edit_result.get('parameters', {}).get('retry_after', 60) retry_after = edit_result.get('parameters', {}).get('retry_after', 60)
raise Exception(f"RetryAfter:{retry_after}") 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: 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: if edit_text_response.status_code == 429:
retry_after = 60 retry_after = 60
try: try: