Я использую API-интерфейс телеграмм, но я все равно не могу скачать filé, который был отправлен моему боту. Я получаю хэш файла, но не знаю, что с ним делать. Там в любом случае? Благодарю.
Как загрузить файл или фотографию, отправленную моему боттеру Telegram?
Ответ 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
Ура! Он просто добавлен 18 сентября 2015 г.
Вы можете использовать getFile(file_id)
. Эта функция возвращает объект File, содержащий file_path
. Вы можете загрузить файл по этому адресу:
https://api.telegram.org/file/bot<token>/<file_path>
Как уже упоминалось в Telegram Bot API Documentation, объект File будет действителен около часа. Вы должны вызвать getFile
снова, чтобы получить новый объект File, если старый истекает.
Ответ 3
Метод работы с файлами пока недоступен. Источник: телеграмма на твиттере
Ответ 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)