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}")