如何将大文件从URL发送到Telegram bot?

时间:2017-04-06 13:39:30

标签: php telegram telegram-bot php-telegram-bot

我有一些大尺寸文件(MP4Zip格式),我想通过Telegram bot将它们发送到我的聊天中,我使用下面的代码:

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

但它只能发送小尺寸,小于50MB的文件!但我知道file_id发送的文档没有文件大小限制。你可以看到this page
现在我如何为我的文件制作file_id?我的文件上传到我的服务器上,我正在使用PHP。

3 个答案:

答案 0 :(得分:3)

Telegram bot API只能通过url param发送小于20 MB的文件,您应该查找Sending Files部分。

如果要发送20-50 MB文件,则应下载并重新上传到Telegram bot API服务器 你可以参考这个简单的代码

$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);

答案 1 :(得分:2)

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

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

答案 2 :(得分:-1)

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

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

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

您不需要制作文件ID。

  

您只需要将文件发送到僵尸程序并让机器人找到答案   fileID并将其保存在某处以备将来转移。