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

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您可以创建任意文件中写入。


不要复制粘贴,根据您的需要重写。


心有法竹
浏览 747回答 2
2回答

胡子哥哥

如果你想通过电报机器人发送文件,你有三个选择:InputStream(照片限制为10 MB,其他文件限制为50 MB)来自http url(Telegram 将下载并发送文件。照片最大5 MB,其他类型内容最大20 MB。)通过file_id发送缓存文件。(以这种方式发送的文件没有限制)因此,我建议您预先存储 file_ids 并通过这些 id 发送文件(api 文档也推荐这样做)。

汪汪一只猫

使用本地 Telegram Bot API 服务器,您可以发送具有 2000Mb 文件大小限制的 InputStream,默认值为 50Mb。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java