Подтвердить что ты не робот

Как загрузить файл или фотографию, отправленную моему боттеру Telegram?

Я использую API-интерфейс телеграмм, но я все равно не могу скачать filé, который был отправлен моему боту. Я получаю хэш файла, но не знаю, что с ним делать. Там в любом случае? Благодарю.

4b9b3361

Ответ 1

Теперь это доступно!

https://core.telegram.org/bots/api#getfile

Ура! Это было добавлено 18 сентября:

https://core.telegram.org/bots/api

Применение:

В JSON сообщения вы получите file_id, как и раньше. Пример объекта сообщения с голосом:

{
  message_id: 2675,
  from: {
    id: 10000001,
    first_name: 'john',
    username: 'john'
  },
  chat: {
    id: 10000001,
    first_name: 'john',
    username: 'john'
  },
  date: 1442848171,
  voice: {
    duration: 2,
    mime_type: 'audio/ogg',
    file_id: 'AwADBAADYwADO1wlBuF1ogMa7HnMAg',  //  <------- file_id
    file_size: 17746
  }
}

Через API getFile теперь вы можете получить необходимую информацию о пути для файла:

https://api.telegram.org/bot<bot_token>/getFile?file_id=the_file_id

Это вернет объект с file_id, file_size и file_path. Затем вы можете использовать file_path для загрузки файла:

https://api.telegram.org/file/bot<token>/<file_path>

Обратите внимание, что эта ссылка будет доступна только в течение часа. Через час вы можете запросить другую ссылку. Это означает, что если вы хотите каким-то образом разместить файл, и вы избегаете проверки и повторной проверки свежих ссылок каждый раз, когда вы его обслуживаете, вам может быть лучше загрузить файл на свой собственный хостинг.

Максимальный размер файла, полученного с помощью этого метода, составляет 20 МБ. Ошибка: получена, когда используется файл размером более 20 МБ (см. Ниже)

{"ok":false,"error_code":400,"description":"Bad Request: file is too big[size:1556925644]"}

Из документов телеграммы:

При успешном завершении возвращается объект File. Затем файл можно загрузить по ссылке https://api.telegram.org/file/bot/, где взято из ответа. Гарантируется, что ссылка будет действительна в течение как минимум 1 часа. Когда ссылка истекает, новый запрос можно запросить, вызвав getFile снова. На данный момент боты могут загружать файлы размером до 20 МБ.

Ответ 2

It's just added at September 18, 2015!

Ура! Он просто добавлен 18 сентября 2015 г.

Вы можете использовать getFile(file_id). Эта функция возвращает объект File, содержащий file_path. Вы можете загрузить файл по этому адресу:

https://api.telegram.org/file/bot<token>/<file_path>

Как уже упоминалось в Telegram Bot API Documentation, объект File будет действителен около часа. Вы должны вызвать getFile снова, чтобы получить новый объект File, если старый истекает.

Ответ 4

Если у вас есть файл_ид, вам нужно использовать sendDocument или sendPhoto, если вы хотите отправить сообщение себе, вам нужно сообщить своему боту свой идентификатор пользователя или ваш идентификатор чата (то же самое в чате один к одному).

Ответ 5

Если вы используете pyTelegramBotAPI, вы можете загрузить свою фотографию с помощью этого кода:

raw = message.photo[2].file_id
path = raw+".jpg"
file_info = bot.get_file(raw)
downloaded_file = bot.download_file(file_info.file_path)
with open(path,'wb') as new_file:
    new_file.write(downloaded_file)