2017-04-06 4 views
2

私は(MP4Zip形式で)いくつかの大きなサイズのファイルを持っていると私は電報ボットによって私のチャットにそれらを送りたい、私は以下のコードを使用: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を使用してファイルを送信するだけで、負荷がTelegramのサーバー上にあるようにすることができます。もちろん、自分のサーバーからファイルを送信することもできますが、この方法はあなたのボットの速度を低下させます。

ボットにファイルを送信してfileIDを取得すると、その時点からファイルを自分のサーバーに保存する必要なくすぐにファイルを送信できることに注意してください。

fileIDを作成する必要はありません。

必要なのは、ボットにファイルを送信すると、ボットが にファイルIDを見つけると将来の転送のためにどこかに保存できます。

1

あなたのサーバーにpwrtelegramをインストールできます。その後、API URLを切り替えるだけで、あなたのボットで1.5GBまでのファイルをアップロードすることができます。それが唯一可能な方法です。詳細については、リンクを参照してください。

は、file_idをランダムに渡すことはできません。これは電報が送信しないためです。以前はあなたのボットによってアップロードされたfile_idのみを渡すことができます。制限を回避するには、上記の方法を使用します。それはとてもうまくいく。

+0

おかげで、この単純なコードを参照することができますか? –

+0

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

+0

実際にAPi URLをapi.pwrtelegram.xyzに切り替えてください。 –

1

電文bot APIは、url paramで20 MB未満のファイルしか送信できません。Sending Filesセクションを検索する必要があります。

20-50 MBのファイルを送信する場合は、Telegram bot APIサーバーにダウンロードして再アップロードする必要があります。
あなたはPWRTelegram用のファイルを送信するための任意のシンプルなPHPのソースがある:)を支援するための

$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); 
関連する問題