4

我有一些大文件(格式MP4Zip格式),我想通过 Telegram 机器人将它们发送到我的聊天室,我使用了以下代码:

file_get_contents('https://api.telegram.org/bot[[app:token]]/sendDocument?chat_id=24523586&document='.$fileAddress);

但它只能发送小于 50MB 的小文件!但我知道通过 . 发送的文档没有文件大小限制file_id。你可以看到这个页面
现在我怎样才能file_id为我的文件制作?我的文件上传到我的服务器上,我正在使用 PHP。

4

3 回答 3

4

Telegram bot API can only send files less than 20 MB by url param, you should lookup Sending Files section.

If you want to send 20-50 MB files, you should download and re-upload to Telegram bot API server.
You can refer this simple code

$curl = curl_init();
curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.telegram.org/bot131210513:AXXXXXX/sendDocument?caption=Hello+World&chat_id=24523586',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Content-Type: multipart/form-data'
    ],
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => [
        'document' => curl_file_create('/etc/hosts', 'plain/text', 'Hosts-file.txt')
    ]
]);
$data = curl_exec($curl);
curl_close($curl);
于 2017-04-09T02:21:02.367 回答
3

2021 年更新: Telegram 现在提供了一个可自托管的 Telegram Bot API,它可以上传 1.5GB。

您可以在您的服务器上安装pwrtelegram 。然后只需切换 API URL,您就可以使用机器人上传多达 1.5 GB 的文件。这是唯一可能的方法。查看链接了解更多信息。

此外,您不能传入任何 random file_id,因为 Telegram 不会发送它。您只能传入您的机器人之前上传的 file_id。要绕过限制,请使用上述方法。它工作得很好。

于 2017-04-07T09:18:18.757 回答
-2

首先,您应该将文件发送到您的机器人,然后获取文件 ID。

之后,您可以使用 fileID 发送文件,这样负载将在 Telegram 的服务器上,而不是您的服务器上。当然,您可以将文件从您自己的服务器发送到,但这种方法会导致您的机器人速度降低。

请注意,当您向机器人发送文件并获取文件 ID 时,从那一刻起,可以立即发送文件,而无需将文件存储在您自己的服务器上。

您不需要创建文件 ID。

您所需要的只是将文件发送给机器人,让机器人找出文件 ID 并将其保存在某处以供将来传输。

于 2017-04-06T18:38:28.290 回答