首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何下载发送给我的电报机器人的文件或照片?

如何下载发送给我的电报机器人的文件或照片?
EN

Stack Overflow用户
提问于 2015-06-28 05:11:01
回答 6查看 118.4K关注 0票数 68

我正在使用电报bot API,但无论如何,我都看不见下载一条发送给我的bot的文件。我得到了一个散列文件,但不知道如何处理它。有办法吗?谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 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。带有语音文件的消息对象的示例:

代码语言:javascript
运行
复制
{
  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,您现在可以获得文件所需的路径信息:

代码语言:javascript
运行
复制
https://api.telegram.org/bot<bot_token>/getFile?file_id=the_file_id

这将返回一个带有file_idfile_sizefile_path的对象。然后可以使用file_path下载该文件:

代码语言:javascript
运行
复制
https://api.telegram.org/file/bot<token>/<file_path>

请注意,此链接仅可用一个小时。一个小时后,您可以请求另一个链接。这意味着,如果您想以某种方式承载该文件,并且避免每次服务时检查和重新检查新链接,则最好将该文件下载到您自己的托管服务中。

通过此方法获得的文件的最大大小是20 is。错误:当使用大于20 is的文件时获得。(如下所示)

代码语言:javascript
运行
复制
{"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的文件。

票数 96
EN

Stack Overflow用户

发布于 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对象。

票数 13
EN

Stack Overflow用户

发布于 2016-05-14 10:38:48

如果您正在使用pyTelegramBotAPI,可以使用以下代码下载您的照片:

代码语言:javascript
运行
复制
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)
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31096358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档