2017-04-06 254 views
2

我有一些大尺寸文件(MP4Zip格式),我想送他们到电报BOT我聊天,我用下面的代码:如何将大文件从URL发送到Telegram机器人?

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

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

回答

0

首先,你应该发送你的文件到你的机器人,然后得到fileID。

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

请注意,当您将文件发送到您的机器人并获取文件ID时,此时可立即发送文件,而无需将文件存储在您自己的服务器上。

您不需要创建fileID。

所有你需要的是将文件发送给机器人,让机器人找出 的FILEID和保存在某个地方,以备日后转让。

1

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

另外,你的不能通过任何随机file_id,因为电报不会发送它。您只能传入您的机器人之前上传的file_id。要绕过限制,请使用上面的方法。它工作得很好。

+0

感谢帮助:)有没有简单的PHP源发送文件PWRTelegram? –

+0

@AliYQB https://github.com/hossein101/uploader-bot/ –

+0

其实只需将APi网址切换到api.pwrtelegram.xyz,您就可以去 –

1

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); 
相关问题