Telegram bot php untuk hosting gambar?

telegra.ph Tutorial mudah kali ini saya ingin mengajak semua untuk cuba satu coding yang mudah untuk kita upload gambar ke telegram bot dan bot itu akan reply url untuk kita guna secara percuma sama ada untuk letak di blog, website dan mana-mana lokasi yang mudah untuk kita akses.

Apa yang kita perlukan adalah web hosting untuk kita host file php kita serta telegram bot yang kita telah sediakan dengan webhook seperti tutorial sebelum ini.

Saya akan menggunakan bot @tutowsolat_bot yang sebelum ini untuk kita gunakan.

Dengan menggunakan api telegram, setiap lampiran seperti gambar, dokumen, video dan lain-lain, apabila kita upload di telegram, ia akan memberikan file-id yang boleh kita gunakan untuk memanggil fail tersebut.

Saya akan menggunakan api telegra.ph untuk kita muat naik gambar dari telegram bot ke server telegra.ph. Apabila kita foward atau upload gambar ke telegram dengan option compress ia akan menghasilkan file_id bagi setiap resolusi mengikut kualiti gambar tersebut. Untuk tutorial kali ini kita akan menggunakan gambar yang resolusi paling tinggi. Kita memerlukan beberapa maklumat dari json file kita. Anda boleh menggunakan @RawDataBot dan JSON Viewer.

jsonuploadedpic

Mari kita ekstrak json data yang diperlukan :

//mime_type untuk tutorial akan datang
$docmime = $update["message"]["document"]["mime_type"];
//jumlah file_id mengikut resolusi
$nbr_image = count($update['message']['photo']);
//pilih resolusi paling tinggi
$pick_image = ($nbr_image)-1;
//file_id yang dipilih untuk upload ke server telegra.ph
$imgfileid = $update["message"]["photo"][$pick_image]["file_id"];

Ekstrak url path untuk gambar yang telah dimuatnaik dari server telegram :

$getfilepath = json_decode(file_get_contents("https://api.telegram.org/bot".$BOT_TOKEN."/getfile?file_id=".$imgfileid),true);
$getfilepath2 = $getfilepath["result"]["file_path"];
$downlink = "https://api.telegram.org/file/bot".$BOT_TOKEN."/".$getfilepath2;
file_put_contents('image.jpg', file_get_contents($downlink));

Kemudian kita curl fail gambar tersebut ke server telegra.ph dan ekstrak dari json file untuk mendapatkan link baru dari server telegra.ph (public link) :

//curl image.jpg file ke api telegrap.ph        
$ch = curl_init();
$url = 'https://telegra.ph/upload';
$post_data = array("photo" => new CURLFile(realpath("image.jpg")));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$post_data);
$data =curl_exec($ch);
curl_close($ch);
$res= json_decode($data,TRUE);
$src = $res[0]['src'];

Kemudian kita print result di telegram bot kita seperti contoh di bawah :

$replyMsg = "
Image File Detail :
======================
File ID : ".$imgfileid."
Download Link :
https://telegra.ph".$src."
======================";

$parameters = array(
"chat_id" => $userChatId,
"text" => $replyMsg,
"disable_web_page_preview" => true,
"parseMode" => "markdown"
);
send("sendMessage", $parameters);

$parameters2 = array(
"chat_id" => $userChatId,
"photo" => new CURLFile(realpath("image.jpg")),
"caption" => "https://telegra.ph".$src
);
send("sendPhoto", $parameters2);
//delete file sementara image.jpg dari server kita
unlink("image.jpg");

Mari kita cuba masukkan semua coding kita ke dalam statement if seperti ini :

if (!empty($update['message']['photo'])) {
//coding kita
}

Result Anda seperti di bawah. Selamat Mencuba!!

result gambar