如何通过 Telegram Bot 发送文件

Jen*_*nyB 4 telegram-bot

我需要使用 TelegramBot API 发送 txt 文件。

我已经尝试过https://api.telegram.org/botMYT0KEN/sendDocument?chat_id=569502265&document=/Users/users/Desktop/file.txt

并有问题:

{"ok":false,"error_code":400,"description":"错误请求:指定了错误的远程文件 ID:错误的字符串长度”}

小智 6

来自 Telegram 官方文档

\n\n
\n

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

\n\n

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

\n\n

通过 file_id 重新发送时无法更改文件类型。\n 即视频无法作为照片发送、照片无法作为文档发送\n 等。重新发送缩略图。按 file_id 重新发送\n 照片将发送其所有尺寸。file_id 对于每个机器人来说都是唯一的,并且无法从一个机器人转移到另一个机器人。\n 通过 URL 发送

\n\n

通过 URL 发送时,目标文件必须具有正确的 MIME 类型\n(例如,sendAudio 的音频/mpeg 等)。在 sendDocument 中,通过 URL 发送当前仅适用于 gif、pdf 和 zip 文件。要使用 sendVoice,文件类型必须为 audio/ogg 并且大小不超过 1MB。1\xe2\x80\x9320MB 语音笔记将作为文件发送。其他配置可能有效,但我们不能保证它们一定有效。

\n
\n\n

https://core.telegram.org/bots/api

\n\n

这是您的问题所需要的:

\n\n
\n

使用 multipart/form-data 发布文件,就像通过浏览器上传文件的通常方式一样。照片最大大小为 10 MB,其他文件最大大小为 50 MB\n

\n
\n

  • 这没有帮助,文档没有显示如何做到这一点。 (4认同)

Iva*_*dov 6

为了完成唐尼的回答,我想添加一个将.txt文件作为文档发送的示例。

看起来您正在使用 OS X 作为操作系统,其中curl预装了实用程序。

打开终端并发出如下请求:

curl -v -F "chat_id=569502265" -F document=@/Users/users/Desktop/file.txt https://api.telegram.org/bot<TOKEN>/sendDocument
Run Code Online (Sandbox Code Playgroud)

  • 我想补充一点,如果聊天是公共聊天,即“@mychannel”,除非我们更改 --form-string 的 -F 来指定 chat_id,否则它将无法工作。像这样:curl -v --form-string "chat_id=@mychannel" -F document=@/Users/$USER/Desktop/file.txt api.telegram.org/bot&lt;TOKEN&gt;/sendDocument (2认同)