PHP ile Telegram Kanalı Nasıl Yönetilir?
Merhaba arkadaşlar, bu yazımızda Telegram webhook ile bir kanalı nasıl yönetebiliriz ondan bahsedeceğim.
Öncelikle bu yazımız da orta seviye php bilgisi gerektirmektir. Telegramdan bot kanalı nasıl açılır bundan tekrar bahsetmeyeceğim. Bu yazımızdan telegram bot kanalı nasıl oluşturacağını öğrenebilirsiniz.
Webhook Nedir?
Webhook, uygulamalar arası senkronize haberleşmeyi sağlayan karşılaşmalardır. Örneğin ana uygulamadaki aksiyonlar bağlı olduğu x uygulamalarını tektikleyecek uyaranlar gönderebilir. Telegram örneğinde chat odasına mesaj yazan kullanıcının datası webhook ile ilişkilendirilmiş uygulamaya eş zamanlı gönderilecektir.
Bu kadar bilgi yeterli, bu örnekte temel database CRUD işlemlerine yer verilecektir.
Telegram sınıfını gerekli aksiyonları almak için hazırlıyoruz.
require 'response.php';
require 'http.php';
class TelegramBot{
const API_URL = 'https://api.telegram.org/bot';
private $http;
private $token;
private $chatId;
public function __construct(){
$this->http = new Http2();
}
public function setToken($token){
$this->token = $token;
}
public function request($method,$posts){
$url = self::API_URL . $this->token."/".$method;
return $this->http->post($url,$posts);
}
public function setWebHook($url){
return $this->request('setWebHook',['url' => $url]);
}
public function getData(){
$data = json_decode(file_get_contents('php://input'));
$this->chatId = $data->message->chat->id;
return $data->message;
}
public function sendMessage($message,$id = null){
return $this->request('sendMessage',[
'chat_id' => $id != null ? $id : $this->chatId,
'text' => $message
]);
}
}
Telegram Webhook Tanımlanması
TelegramBot sınıfının setToken methoduna telegram father bot ile anlaştığınız token bilgisi girilmelidir.
$telegramBot = new TelegramBot();
$telegramBot->setToken("55282123333:AhhreSC5ADSAUt36OgGGA1234X8dasas04hdo34DA1d9I");
$telegramBot->setWebHook("https://masterdark.net/webhook.php");
Bu işlemi yaptığınızda chat uygulamanıza bir mesaj aldığınızda telegram tarafından sizin webhook.php sayfasına data gönderilecektir.
webhook.php
$dbModel = new Model();
$telegramBot = new TelegramBot();
$telegramBot->setToken("55282123333:AhhreSC5ADSAUt36OgGGA1234X8dasas04hdo34DA1d9I");
$data = $telegramBot->getData();
if($data->text == 'beni kaydet'){
$chatid = $data->chat->id;
$data = $dbModel->where('telegramid', $chatid)->from('users')->getOne();
if($data){
$telegramBot->sendMessage('Zaten kayıtlısınız.');
}else{
$dbModel->table('users')->set(['telegramid' => $chatid])->insert();
$telegramBot->sendMessage('Başarılı şekilde üye oldunuz.');
}
}else if($data->text == 'beni çıkart'){
$chatid = $data->chat->id;
$dbModel->from('users')->where('telegramid',$chatid)->del();
$telegramBot->sendMessage('Üyelikten çıkarıldınız.');
}
else{
$telegramBot->sendMessage( <<< ENDHEREOK
Komutlar;
<beni kaydet> : Üyelere kaydeder.
<beni çıkart> : Üyelerden çıkartır.
ENDHEREOK);
}
Biraz database biraz php bilgisi ile bildirim almak işte bu kadar kolay.
Geliştirmek hayal gücünüze kaldı. Misal ****** uygulamasından verileri scrape ediyorum koşula göre bildirim gönderiyorum. İşlerimizi otomatize etmek zamandan tasarruf etmek için geliştirmeye devam ediyoruz..