Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как научить телеграм-бота выводить картинки пользователю (python)?

Ксения Иванова Ученик (100), на голосовании 2 года назад
Пишу простенький чат-бот в телеге. Намучалась с выводом картинки пользователю. Пишу с библиотекой telebot (pytelegrambotapi)

Пыталась сделать так:

 send_photo_file_id(chat_id, 'AgACAgIAAxkBAAETa79jq2IAAeKbxZlKZzjOr7fSwOE6gq8AAknEMRuiG2BJ8GjPO87SHcEBAAMCAAN5AAMsBA') 
где длинная последовательность буквоцифор - id картинки, загруженной в телегу. Командная строка винды выдаёт ошибку: "name 'send_photo_file_unique_id' is not defined".

Пыталась сделать так:

 bot.send_photo(message.chat.id, 'AgACAgIAAxkBAAETa8Njq2J-qlhC2gNkpPTr_-JSiryNuQACS8QxG6IbYEk2KUXAsZB7wQEAAwIAA20AAywE') 
Тут вообще непонятно, командная строка выдаёт вот это: "ERROR - TeleBot: "Threaded polling exception: A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: wrong file identifier/HTTP URL specified" 2022-12-30 01:39:02,882 (init.py:1085 MainThread) ERROR - TeleBot: "Exception traceback:". Прикрепила скрин, как выглядит вывод полностью.

Аналогично вот с этой командой:

 photo1=open(r'Путь/photo1.jpg', 'rb')
bot.send_photo(message.chat.id, photo1)
Та же самая "ERROR - TeleBot: "Threaded polling exception: A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: wrong file identifier/HTTP URL specified" 2022-12-30 01:39:02,882 (init.py:1085 MainThread) ERROR - TeleBot: "Exception traceback:"

Код полностью укажу в комментах, здесь по символам не пропускает.

Помогите, пожалуйста!
Дополнен 2 года назад
Голосование за лучший ответ
Rodion Gïtelman Просветленный (42521) 2 года назад
через конструктор делай и не делай мозг
Ксения ИвановаУченик (100) 2 года назад
Так не интересно. К тому же у меня почти всё готово, кроме вот этого вывода картинок
user49913 Просветленный (38813) 2 года назад
> name 'send_photo_file_unique_id' is not defined
питон абсолютно прав, эта функция в приведённом коде действительно нигде не определена и ниоткуда не импортится, я не знаю, откуда она должна была взяться

> Error code: 400. Description: Bad Request: wrong file identifier/HTTP URL specified
а откуда, собственно, взят этот самый identifier?

> bot.send_photo(message.chat.id, photo1)
выглядит правильно, в точности совпадает с примером из README телебота, хочу проверить у себя

выложи код с последним вариантом на https://pastebin.com/
Ксения ИвановаУченик (100) 2 года назад
оки, выложила: https://pastebin.com/BQRmJaUc

Но теперь код выдаёт ошибку: "telebot.apihelper.ApiTelegramException: A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: invalid file HTTP URL specified: Wrong port number specified in the URL"
user49913 Просветленный (38813) но это же вообще ни разу не то, что в сниппете из описания тут в send_photo вместо файлового дескриптора передаётся строка, конечно же это не сработает
Ксения ИвановаУченик (100) 2 года назад
Оки, поправила, выложила: https://pastebin.com/Fc1eCBnH
user49913 Просветленный (38813) неправда :)
Ксения ИвановаУченик (100) 2 года назад
Вы имеете в виду передачу условного AgACAgIAAxkBAAETa69jq1-JNGlag3Nf15ioyDL7NwGhKgACPsQxG6IbYEkmuJz4qDMsmwEAAwIAA3kAAywE без кавычек, не как строку? Сорри, немного запуталась...
user49913 Просветленный (38813) я имею в виду, что "файловый дескриптор" - это та штука, которую возвращает open, она имеет свой собственный тип, не str
Ксения ИвановаУченик (100) 2 года назад
Оооо, так, всё, дошло, разобралась, всё работает! Спасибо огромное!!!!
Valerius Мастер (1992) 2 года назад
у тебя в коде косяк на косяке, начиная с того, что не прописан токен бота. Не бойся показывать токен, он и нахрен никому не нужен, и ты всегда его можешь изменить на новый у ботфазера.
Метода send_photo_file_id (итд) в этой библиотеке нет от слова совсем, есть только
bot.send_photo
Похожие вопросы