【问题标题】:How to send files from telegram bot?如何从电报机器人发送文件?
【发布时间】:2019-06-02 11:32:06
【问题描述】:

我正在编写一个 Telegram 机器人,我需要向用户发送文件。我想获得file_id 我想发送的文件。我正在关注this answer

要获得file_id,我应该将文件发送到我的 Telegram 机器人。问题是如何通过我的机器人将文件发送给它自己? (也许使用 API?)

【问题讨论】:

  • 我不完全确定这对任何类型的文件是否有帮助:this one 等方法对于 chat_id 接受整数(聊天 ID)和字符串(@channel_name)。所以使用bot's username,我想你可以从机器人向它自己发送一条消息。
  • 不,它不起作用。
  • 您不能将任何内容从机器人发送到机器人(本身或其他机器人)。

标签: python bots telegram telegram-bot python-telegram-bot


【解决方案1】:

You can send files 没有file_id

共有三种发送文件的方式(照片、贴纸、音频、媒体、 等):

  • 如果文件已经存储在 Telegram 服务器的某个位置,则无需重新上传:每个文件对象都有一个 file_id 字段, 只需将此 file_id 作为参数传递,而不是上传。那里 以这种方式发送的文件没有限制。
  • 为 Telegram 提供要发送的文件的 HTTP URL。 Telegram 将下载并发送文件。照片最大 5 MB 和 20 MB 其他类型内容的最大值。
  • 使用 multipart/form-data 以通常的方式发布文件,即通过浏览器上传文件。照片最大 10 MB,最大 50 MB 其他文件

只有在您之前已将file_id 发送给某人(使用 URL 或 multipart/form-data)时,您才能使用它。


因此,如果您要发送的文件列表是预定义的“静态”文件,您可以一次性上传所有文件,获取它们的file_id(例如使用getUpdates 方法),存储文件之间的关联和他们各自的file_id,最后你的机器人只能使用file_id与用户交流。

另一方面,如果可能的文件列表不同,您只能通过 URL 或 multipart/form-data 发送文件。

【讨论】:

  • 我选择了第三种方法:使用 multipart/form-data 发布文件。我已经看到很多关于这种方法的问题,没有人可以直接回答。那你能详细解释一下这个方法吗?
  • 当然。 multipart/form-data 有什么问题?
  • @cooleck 也许this question(有好的答案)对你有帮助?
猜你喜欢
  • 2017-06-16
  • 1970-01-01
  • 2019-02-25
  • 1970-01-01
  • 2019-10-30
  • 1970-01-01
  • 2020-08-25
  • 2017-03-19
  • 1970-01-01
相关资源
最近更新 更多