diff --git a/volk_telegram_testing.py b/volk_telegram_testing.py
index ccb27db..ea6b88e 100644
--- a/volk_telegram_testing.py
+++ b/volk_telegram_testing.py
@@ -331,6 +331,179 @@ async def test_telegram_publish():
import traceback
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Тестовое сообщение с картинкой\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Сообщение с картинкой отредактировано через httpx клиент"
+ 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
else:
logger.error(f"Ошибка в ответе API: {result}")