метод getFile в Telegram Bot API

В Telegram Bot API есть метод "getFile" https://core.telegram.org/bots/api#getfile. У меня есть бот для тестирования и установка Telegram на Android. Как мне протестировать этот метод, должен ли я отправить файл своему боту? Если да, то как именно?


person Kemeeda    schedule 09.12.2015    source источник


Ответы (1)


Если кто-то отправил вашему боту файл (фото, видео, документ, аудио и т. д.), getFile возвращает информацию, позволяющую вашему боту загрузить файл. Чтобы проверить этот метод, сделайте следующее:

  1. Используйте приложение Telegram для Android, чтобы отправить боту фотографию.

  2. Откройте браузер, введите в адресную строку https://api.telegram.org/bot<token>/getUpdates

    Вы должны увидеть несколько file_id в ответе. Это миниатюры фото.

  3. Выберите file_id по вашему выбору. Введите в адресной строке браузера https://api.telegram.org/bot<token>/getFile?file_id=<file_id>

    Найдите file_path в ответе. Должно получиться что-то вроде photo\/file_22.jpg. Обратная косая черта предназначена только для экранирования косой черты, поэтому file_path на самом деле photo/file_22.jpg.

  4. Введите в адресной строке https://api.telegram.org/file/bot<token>/<file_path>

    Вы должны увидеть соответствующую миниатюру фотографии.

Чтобы загрузить файл программно, вы можете выполнить те же действия, что и выше, или использовать библиотеку, например telepot. (Python), который позволяет удобно загружать файлы, не выполняя все вышеперечисленные шаги.

person Nick Lee    schedule 09.12.2015
comment
Скачивая изображение я получаю изображение плохого качества вместо оригинала. Есть ли способ получить исходное изображение (ширину/высоту)? Спасибо. - person Isky; 14.09.2016
comment
Разве не так много размеров на выбор? Просто выберите нужный размер. - person Nick Lee; 15.09.2016
comment
Как я могу это сделать? Используя: api.telegram.org/file/bot‹token›/‹file_path› Я вижу изображение, но меньшего размера и плохого качества, чем оригинал. Если я загружаю изображение, а затем масштабирую его, я получаю изображение очень плохого качества. - person Isky; 15.09.2016
comment
Я использую php, как я могу мигрировать? Легко? Преобразовать мой код бота с php на python? Нужно изменить мой Linux-сервер? - person saber tabatabaee yazdi; 25.10.2017
comment
Клиент телеграммы @Mattia изменяет их размер перед загрузкой на серверы телеграмм cdn. Перед преобразованием ваши пользователи должны выбрать исходный метод загрузки вместо метода оптимизации. - person saber tabatabaee yazdi; 25.10.2017
comment
@Mattia для качества, потому что вы загружаете миниатюру. в python вам нужно использовать update.message.photo[-1]['file_id'] вместо update.message.photo[0]['file_id'] для загрузки исходного изображения. технически первый - это миниатюра, последний - исходное изображение в массиве - person amir jj; 28.03.2018