我正在使用电报bot API,但无论如何,我都看不见下载一条发送给我的bot的文件。我得到了一个散列文件,但不知道如何处理它。有办法吗?谢谢。
发布于 2015-09-20 13:29:31
现在可以使用了!
https://core.telegram.org/bots/api#getfile
万岁!它是在9月18日(2015年)增加的:
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 is。错误:当使用大于20 is的文件时获得。(如下所示)
{"ok":false,"error_code":400,"description":"Bad Request: file is too big[size:1556925644]"}
从电报的文档:
成功后,将返回File对象。然后可以通过链接https://api.telegram.org/file/bot/下载该文件,其中是从响应中提取的。保证该链接至少有效1小时。当链接过期时,可以通过调用getFile again.For请求一个新的链接,此时机器人可以下载大小高达20 be的文件。
发布于 2015-09-21 14:07:58
耶!它是在2015年9月18日增加的
您可以使用getFile(file_id)
。此函数返回包含file_path
的文件对象。您可以通过以下地址下载该文件:
https://api.telegram.org/file/bot<token>/<file_path>
正如在电报Bot文档中提到的,File的有效期大约为一个小时。如果旧的文件对象过期,您应该再次调用getFile
以获得一个新的File对象。
发布于 2016-05-14 10:38:48
如果您正在使用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)
https://stackoverflow.com/questions/31096358
复制相似问题