[ВОЛК] доработка тестового httpx постера до картинок
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
@@ -331,6 +331,179 @@ async def test_telegram_publish():
|
|||||||
import traceback
|
import traceback
|
||||||
logger.error(f"Трассировка стека:\n{traceback.format_exc()}")
|
logger.error(f"Трассировка стека:\n{traceback.format_exc()}")
|
||||||
|
|
||||||
|
# Публикуем второе сообщение с картинкой
|
||||||
|
try:
|
||||||
|
logger.info("=" * 80)
|
||||||
|
logger.info("ПОПЫТКА ОТПРАВКИ ТЕСТОВОГО СООБЩЕНИЯ С КАРТИНКОЙ")
|
||||||
|
logger.info("=" * 80)
|
||||||
|
send_photo_url = f"https://api.telegram.org/bot{POSTER_BOT_TOKEN}/sendPhoto"
|
||||||
|
image_url = "https://base.volk-nn.ru/uploads/events/volk26/volk26_event/20251210_175059_0.jpg"
|
||||||
|
|
||||||
|
# Формируем текст для сообщения с картинкой
|
||||||
|
photo_caption = f"{test_tags}\n{test_unit_name}\n<b>Тестовое сообщение с картинкой</b>\n\nЭто тестовое сообщение с изображением для проверки работы публикации фото в Telegram."
|
||||||
|
|
||||||
|
logger.info(f"URL запроса: {send_photo_url}")
|
||||||
|
logger.info(f"Метод: POST")
|
||||||
|
logger.info(f"Параметры запроса:")
|
||||||
|
logger.info(f" chat_id: {CHANNEL_ID}")
|
||||||
|
logger.info(f" photo_url: {image_url}")
|
||||||
|
logger.info(f" photo_url_length: {len(image_url)}")
|
||||||
|
logger.info(f" caption_length: {len(photo_caption)}")
|
||||||
|
logger.info(f" parse_mode: HTML")
|
||||||
|
logger.info(f" disable_notification: {PUBLISH_SILENTLY}")
|
||||||
|
|
||||||
|
photo_payload = {
|
||||||
|
'chat_id': CHANNEL_ID,
|
||||||
|
'photo': image_url,
|
||||||
|
'caption': photo_caption,
|
||||||
|
'parse_mode': 'HTML',
|
||||||
|
'disable_notification': PUBLISH_SILENTLY
|
||||||
|
}
|
||||||
|
|
||||||
|
photo_start_time = datetime.now()
|
||||||
|
photo_response = await httpx_client.post(send_photo_url, json=photo_payload)
|
||||||
|
photo_end_time = datetime.now()
|
||||||
|
photo_duration = (photo_end_time - photo_start_time).total_seconds()
|
||||||
|
|
||||||
|
logger.info(f"Статус ответа: {photo_response.status_code}")
|
||||||
|
logger.info(f"Время запроса: {photo_duration:.2f} секунд")
|
||||||
|
|
||||||
|
if photo_response.status_code == 200:
|
||||||
|
photo_result = photo_response.json()
|
||||||
|
if photo_result.get('ok'):
|
||||||
|
photo_message_data = photo_result.get('result', {})
|
||||||
|
photo_message_id = photo_message_data.get('message_id')
|
||||||
|
photo_chat_data = photo_message_data.get('chat', {})
|
||||||
|
|
||||||
|
logger.info("=" * 80)
|
||||||
|
logger.info("СООБЩЕНИЕ С КАРТИНКОЙ УСПЕШНО ОТПРАВЛЕНО!")
|
||||||
|
logger.info("=" * 80)
|
||||||
|
logger.info(f"Message ID: {photo_message_id}")
|
||||||
|
logger.info(f"Chat ID: {photo_chat_data.get('id')}")
|
||||||
|
logger.info(f"Chat type: {photo_chat_data.get('type')}")
|
||||||
|
logger.info(f"Chat title: {photo_chat_data.get('title', 'N/A')}")
|
||||||
|
logger.info(f"Время отправки: {photo_duration:.2f} секунд")
|
||||||
|
logger.info(f"Дата сообщения: {photo_message_data.get('date')}")
|
||||||
|
logger.info("=" * 80)
|
||||||
|
|
||||||
|
# Редактируем сообщение с картинкой, добавляя информацию о редактировании
|
||||||
|
try:
|
||||||
|
logger.info("=" * 80)
|
||||||
|
logger.info("ПОПЫТКА РЕДАКТИРОВАНИЯ СООБЩЕНИЯ С КАРТИНКОЙ")
|
||||||
|
logger.info("=" * 80)
|
||||||
|
edit_photo_caption_url = f"https://api.telegram.org/bot{POSTER_BOT_TOKEN}/editMessageCaption"
|
||||||
|
logger.info(f"URL запроса: {edit_photo_caption_url}")
|
||||||
|
logger.info(f"Метод: POST")
|
||||||
|
logger.info(f"Параметры запроса:")
|
||||||
|
logger.info(f" chat_id: {CHANNEL_ID}")
|
||||||
|
logger.info(f" message_id: {photo_message_id}")
|
||||||
|
|
||||||
|
# Добавляем информацию о редактировании в конец подписи
|
||||||
|
edited_photo_caption = f"{photo_caption}\n\n<i>Сообщение с картинкой отредактировано через httpx клиент</i>"
|
||||||
|
logger.info(f" caption_length (после редактирования): {len(edited_photo_caption)}")
|
||||||
|
logger.info(f" parse_mode: HTML")
|
||||||
|
|
||||||
|
edit_photo_payload = {
|
||||||
|
'chat_id': CHANNEL_ID,
|
||||||
|
'message_id': photo_message_id,
|
||||||
|
'caption': edited_photo_caption,
|
||||||
|
'parse_mode': 'HTML'
|
||||||
|
}
|
||||||
|
|
||||||
|
edit_photo_start_time = datetime.now()
|
||||||
|
edit_photo_response = await httpx_client.post(edit_photo_caption_url, json=edit_photo_payload)
|
||||||
|
edit_photo_end_time = datetime.now()
|
||||||
|
edit_photo_duration = (edit_photo_end_time - edit_photo_start_time).total_seconds()
|
||||||
|
|
||||||
|
logger.info(f"Статус ответа: {edit_photo_response.status_code}")
|
||||||
|
logger.info(f"Время запроса: {edit_photo_duration:.2f} секунд")
|
||||||
|
|
||||||
|
if edit_photo_response.status_code == 200:
|
||||||
|
edit_photo_result = edit_photo_response.json()
|
||||||
|
if edit_photo_result.get('ok'):
|
||||||
|
logger.info("=" * 80)
|
||||||
|
logger.info("СООБЩЕНИЕ С КАРТИНКОЙ УСПЕШНО ОТРЕДАКТИРОВАНО!")
|
||||||
|
logger.info("=" * 80)
|
||||||
|
logger.info(f"Время редактирования: {edit_photo_duration:.2f} секунд")
|
||||||
|
logger.info("=" * 80)
|
||||||
|
else:
|
||||||
|
logger.error(f"Ошибка в ответе API при редактировании подписи: {edit_photo_result}")
|
||||||
|
logger.error(f"Описание ошибки: {edit_photo_result.get('description', 'N/A')}")
|
||||||
|
logger.error(f"Код ошибки: {edit_photo_result.get('error_code', 'N/A')}")
|
||||||
|
else:
|
||||||
|
logger.error(f"HTTP ошибка при редактировании подписи: {edit_photo_response.status_code}")
|
||||||
|
logger.error(f"Текст ответа: {edit_photo_response.text}")
|
||||||
|
|
||||||
|
except httpx.TimeoutException as e:
|
||||||
|
logger.error("=" * 80)
|
||||||
|
logger.error("ТАЙМАУТ ПРИ РЕДАКТИРОВАНИИ СООБЩЕНИЯ С КАРТИНКОЙ!")
|
||||||
|
logger.error("=" * 80)
|
||||||
|
logger.error(f"Тип ошибки: {type(e).__name__}")
|
||||||
|
logger.error(f"Сообщение: {str(e)}")
|
||||||
|
logger.error(f"Все атрибуты ошибки: {vars(e)}")
|
||||||
|
logger.error(f"Полное представление: {repr(e)}")
|
||||||
|
logger.error(f"Параметры запроса:")
|
||||||
|
logger.error(f" chat_id: {CHANNEL_ID}")
|
||||||
|
logger.error(f" message_id: {photo_message_id}")
|
||||||
|
logger.error(f" caption_length: {len(edited_photo_caption)}")
|
||||||
|
except httpx.HTTPError as e:
|
||||||
|
logger.error("=" * 80)
|
||||||
|
logger.error("ОШИБКА HTTP ПРИ РЕДАКТИРОВАНИИ СООБЩЕНИЯ С КАРТИНКОЙ!")
|
||||||
|
logger.error("=" * 80)
|
||||||
|
logger.error(f"Тип ошибки: {type(e).__name__}")
|
||||||
|
logger.error(f"Сообщение: {str(e)}")
|
||||||
|
logger.error(f"Все атрибуты ошибки: {vars(e)}")
|
||||||
|
logger.error(f"Полное представление: {repr(e)}")
|
||||||
|
except Exception as e:
|
||||||
|
logger.error("=" * 80)
|
||||||
|
logger.error("НЕОЖИДАННАЯ ОШИБКА ПРИ РЕДАКТИРОВАНИИ СООБЩЕНИЯ С КАРТИНКОЙ!")
|
||||||
|
logger.error("=" * 80)
|
||||||
|
logger.error(f"Тип ошибки: {type(e).__name__}")
|
||||||
|
logger.error(f"Сообщение: {str(e)}")
|
||||||
|
logger.error(f"Все атрибуты ошибки: {vars(e) if hasattr(e, '__dict__') else 'N/A'}")
|
||||||
|
logger.error(f"Полное представление: {repr(e)}")
|
||||||
|
import traceback
|
||||||
|
logger.error(f"Трассировка стека:\n{traceback.format_exc()}")
|
||||||
|
|
||||||
|
else:
|
||||||
|
logger.error(f"Ошибка в ответе API при отправке фото: {photo_result}")
|
||||||
|
logger.error(f"Описание ошибки: {photo_result.get('description', 'N/A')}")
|
||||||
|
logger.error(f"Код ошибки: {photo_result.get('error_code', 'N/A')}")
|
||||||
|
else:
|
||||||
|
logger.error(f"HTTP ошибка при отправке фото: {photo_response.status_code}")
|
||||||
|
logger.error(f"Текст ответа: {photo_response.text}")
|
||||||
|
|
||||||
|
except httpx.TimeoutException as e:
|
||||||
|
logger.error("=" * 80)
|
||||||
|
logger.error("ТАЙМАУТ ПРИ ОТПРАВКЕ СООБЩЕНИЯ С КАРТИНКОЙ!")
|
||||||
|
logger.error("=" * 80)
|
||||||
|
logger.error(f"Тип ошибки: {type(e).__name__}")
|
||||||
|
logger.error(f"Сообщение: {str(e)}")
|
||||||
|
logger.error(f"Все атрибуты ошибки: {vars(e)}")
|
||||||
|
logger.error(f"Полное представление: {repr(e)}")
|
||||||
|
logger.error(f"Параметры запроса:")
|
||||||
|
logger.error(f" chat_id: {CHANNEL_ID}")
|
||||||
|
logger.error(f" photo_url: {image_url}")
|
||||||
|
logger.error(f" caption_length: {len(photo_caption)}")
|
||||||
|
except httpx.HTTPError as e:
|
||||||
|
logger.error("=" * 80)
|
||||||
|
logger.error("ОШИБКА HTTP ПРИ ОТПРАВКЕ СООБЩЕНИЯ С КАРТИНКОЙ!")
|
||||||
|
logger.error("=" * 80)
|
||||||
|
logger.error(f"Тип ошибки: {type(e).__name__}")
|
||||||
|
logger.error(f"Сообщение: {str(e)}")
|
||||||
|
logger.error(f"Все атрибуты ошибки: {vars(e)}")
|
||||||
|
logger.error(f"Полное представление: {repr(e)}")
|
||||||
|
except Exception as e:
|
||||||
|
logger.error("=" * 80)
|
||||||
|
logger.error("НЕОЖИДАННАЯ ОШИБКА ПРИ ОТПРАВКЕ СООБЩЕНИЯ С КАРТИНКОЙ!")
|
||||||
|
logger.error("=" * 80)
|
||||||
|
logger.error(f"Тип ошибки: {type(e).__name__}")
|
||||||
|
logger.error(f"Сообщение: {str(e)}")
|
||||||
|
logger.error(f"Все атрибуты ошибки: {vars(e) if hasattr(e, '__dict__') else 'N/A'}")
|
||||||
|
logger.error(f"Полное представление: {repr(e)}")
|
||||||
|
import traceback
|
||||||
|
logger.error(f"Трассировка стека:\n{traceback.format_exc()}")
|
||||||
|
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
logger.error(f"Ошибка в ответе API: {result}")
|
logger.error(f"Ошибка в ответе API: {result}")
|
||||||
|
|||||||
Reference in New Issue
Block a user