2017-04-06 605 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); 
相關問題