为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Telegram Bot API 发送大文件?

如何使用 Telegram Bot API 发送大文件?

心有法竹 2021-09-15 14:30:37
Telegram bot 的发送文件大小限制为 50MB。我需要发送大文件。有没有办法解决?我知道这个项目https://github.com/pwrtelegram/pwrtelegram但我无法让它工作。也许有人已经解决了这样的问题?有一个选项可以通过 Telegram API 实现文件上传,然后通过file_id与 bot发送。我使用库https://github.com/rubenlagus/TelegramBots用 Java 编写了一个机器人更新为了解决这个问题,我使用了电报 api,它对大文件有 1.5 GB 的限制。我更喜欢 kotlogram - 具有良好文档的完美库https://github.com/badoualy/kotlogram更新 2我如何使用这个库的例子:private void uploadToServer(TelegramClient telegramClient, TLInputPeerChannel tlInputPeerChannel, Path pathToFile, int partSize) {    File file = pathToFile.toFile();    long fileId = getRandomId();    int totalParts = Math.toIntExact(file.length() / partSize + 1);    int filePart = 0;    int offset = filePart * partSize;    try (InputStream is = new FileInputStream(file)) {        byte[] buffer = new byte[partSize];        int read;        while ((read = is.read(buffer, offset, partSize)) != -1) {            TLBytes bytes = new TLBytes(buffer, 0, read);            TLBool tlBool = telegramClient.uploadSaveBigFilePart(fileId, filePart, totalParts, bytes);            telegramClient.clearSentMessageList();            filePart++;        }    } catch (Exception e) {        log.error("Error uploading file to server", e);    } finally {        telegramClient.close();    }    sendToChannel(telegramClient, tlInputPeerChannel, "FILE_NAME.zip", fileId, totalParts)}这里TelegramClient telegramClient和TLInputPeerChannel tlInputPeerChannel您可以创建任意文件中写入。不要复制粘贴,根据您的需要重写。
查看完整描述

2 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

如果你想通过电报机器人发送文件,你有三个选择

  1. InputStream(照片限制为10 MB,其他文件限制为50 MB

  2. 来自http url(Telegram 将下载并发送文件。照片最大5 MB,其他类型内容最大20 MB。)

  3. 通过file_id发送缓存文件。(以这种方式发送的文件没有限制

因此,我建议您预先存储 file_ids 并通过这些 id 发送文件(api 文档也推荐这样做)。


查看完整回答
反对 回复 2021-09-15
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

使用本地 Telegram Bot API 服务器,您可以发送具有 2000Mb 文件大小限制的 InputStream,默认值为 50Mb。


查看完整回答
反对 回复 2021-09-15
  • 2 回答
  • 0 关注
  • 746 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信