如何下载发送到我的 Telegram 机器人的文件或照片?
How do I download a file or photo that was sent to my Telegram bot?
我正在使用电报机器人 API,但无论如何我都看不到下载发送到我的机器人的文件。我得到了文件的哈希值,但不知道如何处理它。有什么办法吗?谢谢。
如果你有file_id那么你需要使用sendDocument or sendPhoto方法,如果你想发送给自己,你需要告诉你的机器人你的用户ID或你的聊天ID(在一对一聊天中也是如此。
处理文件的方法尚不可用。
资料来源:twitter 上的电报
现在可用!
https://core.telegram.org/bots/api#getfile
万岁!添加于 9 月 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
这将 return 具有 file_id、file_size 和 [=39 的对象=]file_path。然后您可以使用 file_path 下载文件:
https://api.telegram.org/file/bot<token>/<file_path>
请注意,此 link 只能使用一个小时。一个小时后,您可以请求另一个 link。这意味着,如果您想以某种方式托管该文件,并且您宁愿避免在每次提供它时检查和重新检查新鲜的 link,您最好将文件下载到您自己的托管服务。
通过此方法获取的文件最大大小为20MB。
报错:使用大于20mb的文件时出现。(如下图)
{"ok":false,"error_code":400,"description":"Bad Request: file is too big[size:1556925644]"}
来自电报的文档:
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.
耶! 2015年9月18日刚刚添加
您可以使用 getFile(file_id)
。此函数 returns 一个包含 file_path
的文件对象。您可以通过这个地址下载文件:
https://api.telegram.org/file/bot<token>/<file_path>
如Telegram Bot API Documentation所述,文件对象的有效期约为一小时。如果旧文件对象过期,您应该再次调用 getFile
以获取新的文件对象。
如果您使用 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)
此外,请注意,Telegram api(通过 webhook)提供 thumbs 属性,对于图像和 gif,它将提供 thumbnail 的文件。要获取源文件,您需要检查根对象 file_id。
我正在使用电报机器人 API,但无论如何我都看不到下载发送到我的机器人的文件。我得到了文件的哈希值,但不知道如何处理它。有什么办法吗?谢谢。
如果你有file_id那么你需要使用sendDocument or sendPhoto方法,如果你想发送给自己,你需要告诉你的机器人你的用户ID或你的聊天ID(在一对一聊天中也是如此。
处理文件的方法尚不可用。 资料来源:twitter 上的电报
现在可用!
https://core.telegram.org/bots/api#getfile
万岁!添加于 9 月 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
这将 return 具有 file_id、file_size 和 [=39 的对象=]file_path。然后您可以使用 file_path 下载文件:
https://api.telegram.org/file/bot<token>/<file_path>
请注意,此 link 只能使用一个小时。一个小时后,您可以请求另一个 link。这意味着,如果您想以某种方式托管该文件,并且您宁愿避免在每次提供它时检查和重新检查新鲜的 link,您最好将文件下载到您自己的托管服务。
通过此方法获取的文件最大大小为20MB。 报错:使用大于20mb的文件时出现。(如下图)
{"ok":false,"error_code":400,"description":"Bad Request: file is too big[size:1556925644]"}
来自电报的文档:
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.
耶! 2015年9月18日刚刚添加
您可以使用 getFile(file_id)
。此函数 returns 一个包含 file_path
的文件对象。您可以通过这个地址下载文件:
https://api.telegram.org/file/bot<token>/<file_path>
如Telegram Bot API Documentation所述,文件对象的有效期约为一小时。如果旧文件对象过期,您应该再次调用 getFile
以获取新的文件对象。
如果您使用 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)
此外,请注意,Telegram api(通过 webhook)提供 thumbs 属性,对于图像和 gif,它将提供 thumbnail 的文件。要获取源文件,您需要检查根对象 file_id。