2015-06-28 4 views

ответ

31

Это теперь доступна!

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 
    } 
} 

Via 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 МБ. Ошибка. Получается, если файл большой, чем 20MB используется (показано ниже)

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

От Docs Телеграмма в:

On success, a File object is returned. The file can then be downloaded via the link https://api.telegram.org/file/bot /, where is taken from the response. It is guaranteed that the link will be valid for at least 1 hour. When the link expires, a new one can be requested by calling getFile again.For the moment, bots can download files of up to 20MB in size.

+3

Чтобы уточнить, вызов API getFile должен включать в себя строку '? File_id = the_file_id' в строке запроса GET. – jotadepicas

+0

Когда я использую/getFile, я не могу получить file_path некоторое время , например, когда файл является ogg file_path, и файл загружен правильно, но когда файл mp3 filr_path не определен и просто возвращает file_id и file_size! –

3

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

+0

ОП просит о получении, а не посылать. Переслать или повторно отправить файл самому себе, просто оставит вас с той же проблемой. –

+0

Если бот отправит мне файл, я могу скачать его из беседы с ботом на мой телефон или мой компьютер (из самой телеграммы). Согласно вашему комментарию, Артур хочет получить сообщение в боте, а затем бот загружает изображение или файл на сервер (где работает бот)? – delaf

+0

Теперь я понимаю, что вы имели в виду. Но да, обычно вы хотите, чтобы бот загружал файл автоматически и обрабатывал его каким-то образом. В этом-то и смысл иметь бота. –

6

It's just added at September 18, 2015!

Yay! Он добавлен только 18 сентября 2015 года

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

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

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

+0

Каков формат конечной точки getFile? Я попытался/getFile,/getFile? File_id = xxx, getFile (xxx), и они не сработали. –

2

Если вы используете 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) 
+0

фото [2] там есть 4 версии фотографии. если я хочу скачать меньший размер [0] нулевой индекс мой? как насчет кода примера php? –

 Смежные вопросы

  • Нет связанных вопросов^_^