Telebot выдает ошибку при отправке картинки
Пишу бота на python с помощью telebot
, который получает информацию из Википедии с помощью библиотеки wikipedia и отправляет пользователю. В данном случае, у меня есть функция которая по отправленной теме от пользователя должна отправить картинку, но возникает ошибка:
A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: IMAGE_PROCESS_FAILED .
Как бы я не пытался не получается, можете подсказать что тут не так?
import requests
import telebot
import time
import os
from PIL import Image
<...>
@bot.message_handler(commands=['search_image'])
def handle_search_image(message):
bot.send_message(message.chat.id, "Введите тему по которой тебе нужно найти картинку.")
def get_image(message):
"""
Принимает тему от пользователя, находит соответствующую статью в Wikipedia
и отправляет ссылку на первую найденную в ней картинку.
"""
try:
# Получаем страницу Wikipedia по заданной теме
topic = message.text
page = wikipedia.page(topic)
image_url = page.images[0]
# Загружаем изображение с URL-адреса
response = requests.get(image_url, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0'})
# Проверяем, что изображение загрузилось успешно
if response.status_code == 200:
# Сохраняем изображение на диск
filename = f"{topic.replace(' ', '_')}.png"
with open(filename, "wb") as f:
f.write(response.content)
# Отправляем изображение в Telegram-бот
with open(filename, "rb") as f:
bot.send_photo(message.chat.id, f)
else:
bot.send_message(message.chat.id, "Ошибка при загрузке изображения.")
except Exception as e:
bot.send_message(message.chat.id, f"Произошла ошибка: {e}")
finally:
# Удаляем временный файл
os.remove(filename)
bot.register_next_step_handler(message, get_image)```
Ответы (1 шт):
Автор решения: Amgarak
→ Ссылка
Не вижу смысла сохранять изображение, ведь придётся следить ещё за удалением файлов?♀️
2 примера:
# Путь к изображению
image_path = r'C:\Users\Amgarak\Desktop\озшпр.png'
# Отправка сообщения с изображением
with open(image_path, 'rb') as image:
bot.send_photo(chat_id=chat_id, photo=image, caption="Описание")
# URL изображения
photo_url = 'https://upload.wikimedia.org/wikipedia/commons/thumb/0/02/Stack_Overflow_logo.svg/200px-Stack_Overflow_logo.svg.png'
# HTML-разметка Подпись\Изображение
message_text = f'<a href="{photo_url}">​</a> Описание' # ​ или пробел между тегами "> </"
# Сообщение с HTML-разметкой
bot.send_message(chat_id=chat_id, text=message_text, parse_mode='HTML')