Каким образом можно устранить ошибку?

Я разрабатываю телеграм-бота, в основном опираясь на помощь ChatGPT и видеоуроки, но у меня нет опыта в программировании. Суть бота заключается в том, что пользователь отправляет ссылку на веб-сайт, а бот возвращает фотографию с этого сайта. <br/><br/> Я пробовал использовать две разные ссылки. У первой ссылки возникла ошибка: <blockquote>raise TelegramBadRequest(method=method, message=description)<br/>aiogram.exceptions.TelegramBadRequest: Telegram server says - Bad Request: wrong file identifier/HTTP URL specified</blockquote> Во второй ссылке ошибка выглядит так: <blockquote>raise SSLError(e, request=request)<br/>requests.exceptions.SSLError: HTTPSConnectionPool(host='www.pexels.com', port=443): Max retries exceeded with url: /ru-ru/ (Caused by SSLError(SSLError(1, '[SSL: INVALID_SESSION_ID] invalid session id (_ssl.c:1000)')))<br/></blockquote> <br/><br/> Вот код: <pre><code class="python">from aiogram import Bot, Dispatcher, types
from aiogram.filters import Command
from aiogram.types import InputFile
import requests
import os
from bs4 import BeautifulSoup
from config import dp, bot
import asyncio

def get_image_url_from_website(website_url):
    response = requests.get(website_url)
    if response.status_code == 200:
        soup = BeautifulSoup(response.content, 'html.parser')
        # Ищем первый тег &lt;img&gt;
        img_tag = soup.find('img')
        if img_tag and 'src' in img_tag.attrs:
            # Получаем полный URL изображения
            img_url = img_tag['src']
            # Если URL изображения относительный, делаем его абсолютным
            if img_url.startswith('/'):
                img_url = website_url.rstrip('/') + img_url
            return img_url
    return None

def download_image(image_url):
    response = requests.get(image_url)
    if re
  • 3 октября 2024 г. 16:24
Ответы на вопрос 2
На основании вашего описания и предоставленного кода, давайте разберем две основные ошибки и возможные пути их решения.

### Ошибка 1: `TelegramBadRequest: wrong file identifier/HTTP URL specified`

Эта ошибка возникает, когда Telegram не может найти или обработать указанный файл или URL. Вам нужно убедиться, что ссылка на изображение, которую вы отправляете, является правильной и доступной.

**Решение:**
1. Убедитесь, что `image_url`, который вы получаете из функции `get_image_url_from_website`, является допустимым URL-адресом изображения и возвращает изображение в формате, который поддерживает Telegram (например, JPEG или PNG).
2. Проверьте, чтобы ваш URL действительно указывал на файл изображения. Попробуйте открыть его в браузере и убедиться, что изображение отображается.
3. Обрабатывайте различные варианты URL, которые могут быть получены, например, если изображение может загружаться через другой протокол (HTTP/HTTPS).

### Ошибка 2: `requests.exceptions.SSLError: [SSL: INVALID_SESSION_ID] invalid session id`

Эта ошибка указывает на проблемы с SSL-соединением при попытке выполнить запрос. Это может быть связано с временными проблемами на стороне сервера или с конфигурацией вашего окружения.

**Решение:**
1. Убедитесь, что у вас установлены все необходимые библиотеки, включая `requests`. Проверьте, что у вас есть последняя версия.
2. Попробуйте выполнить запрос с помощью другого URL. Например, проверить другую страницу на Pexels или перейти на другой веб-сайт, чтобы понять, сохраняется ли проблема.
3. Если SSL-проблемы возникают только при обращении к определённому сайту, возможно, стоит подождать, пока проблема будет решена на стороне этого сайта.
4. Также можно попробовать отключить проверку SSL (хотя это не лучший подход из соображений безопасности):

   ```python
   response = requests.get(image_url, verify=False)
   ```
   Помните, что использование параметра `verify=False` небезопасно, и его следует использовать очень осторожно, только для тестирования.

### Дополнительные рекомендации
- Убедитесь, что у вас установлен и правильно настроен `BeautifulSoup`.
- Также добавьте вывод ошибок или сообщений для более подробной отладки. Например, можно делать печать получаемого URL изображения перед тем, как отправить его в Telegram.

Пример модифицированного кода для отладки:

```python
def get_image_url_from_website(website_url):
    response = requests.get(website_url)
    if response.status_code == 200:
        soup = BeautifulSoup(response.content, 'html.parser')
        img_tag = soup.find('img')
        if img_tag and 'src' in img_tag.attrs:
            img_url = img_tag['src']
            if img_url.startswith('/'):
                img_url = website_url.rstrip('/') + img_url
            
            print(f"Image URL found: {img_url}")  # Для отладки
            return img_url
    print("Failed to retrieve image URL.")  # Для отладки
    return None
```

Если после этих правок проблемы продолжат возникать, пожалуйста, предоставьте дополнительную информацию о том, какой код выполняется при отправке сообщения или загрузке изображения, и я постараюсь помочь более предметно.
Пишу телеграм бота, в основном с помощью чат гпт и всяких видосов, опыта в программировании 0.
ну вот сначала и стоит набраться опыта, и на более простых задачах, а сейчас ты делаешь что-то методом тыка, без понимания того что делает твой код. Толку таким помогать 0.
Похожие вопросы