From e3de30e429b50ca587b3fdd0005ea41eddd4da87 Mon Sep 17 00:00:00 2001 From: gitadmin Date: Sun, 21 Dec 2025 18:55:15 +0300 Subject: [PATCH] =?UTF-8?q?[=D0=92=D0=9E=D0=9B=D0=9A]=20=D0=B4=D0=BE=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B0=20=D1=82=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=BE=D0=B2=D0=BE=D0=B3=D0=BE=20httpx=20=D0=BF=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B5=D1=80=D0=B0=20=D0=B4=D0=BE=20=D0=BA=D0=B0=D1=80?= =?UTF-8?q?=D1=82=D0=B8=D0=BD=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- volk_telegram_testing.py | 173 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 173 insertions(+) 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}")