Практически все примеры в гугле которые я встречал разбираясь с API телеграмма, работают с какой-то библиотекой. Для совсем простых задач они вовсе не обязательны.
После статьи про бота в вк у меня спрашивали так же про ботов в телеграмме. Расскажу про максимально простой пример создания ботов в телеграмме. Даже не то что создания ботов, а скорее того, как именно работать с апи телеграмма в целом. Делать мы будем абсолютно то же самое, что и в той статье про каллбек апи от вк.
Сделаем то же самое - ответ на сообщения просто задом-наперёд.
Для начала нужно создать бота. Чтобы сделать это, нужно написать отцу ботов в телеграмме команду /newbot
После чего он спросит имя бота и его логин, который обязательно должен кончаться на bot.
Например: evilbot, coder_bot, samplebot и т.д.
Следом вы получите ссылку на своего бота и токен. Боту можете написать даже сейчас, но он ничего Вам не ответит.
Непорядок! Давайте исправим это.
Нам нужно создать файлы webhook.php и tg.class.php.
Ниже будут приведён полный код этих файлов с комментариями
$body = file_get_contents('php://input'); //Получаем в $body json строку
$arr = json_decode($body, true); //Разбираем json запрос на массив в переменную $arr
function cir_strrev($stroka){ //Так как функция strrev не умеет нормально переворачивать кириллицу, нужен костыль через массив. Создадим функцию
preg_match_all('/./us', $stroka, $array);
return implode('',array_reverse($array[0]));
}
include_once ('tg.class.php'); //Меж дела подключаем наш tg.class.php
//Сразу и создадим этот класс, который будет написан чуть позже
//Сюда пишем токен, который нам выдал бот
$tg = new tg('000000000:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
$sms = $arr['message']['text']; //Получаем текст сообщения, которое нам пришло.
//О структуре этого массива который прилетел нам от телеграмма можно узнать из официальной документации.
//Сразу и id получим, которому нужно отправлять всё это назад
$tg_id = $arr['message']['chat']['id'];
//Перевернём строку задом-наперёд используя функцию cir_strrev
$sms_rev = cir_strrev($sms);
//Используем наш ещё не написанный класс, для отправки сообщения в ответ
$tg->send($tg_id, $sms_rev);
exit('ok'); //Обязательно возвращаем "ok", чтобы телеграмм не подумал, что запрос не дошёл
tg.class.php:
<?php
//Задаём класс
class TG {
public $token = ''; //Создаём публичную переменную для токена, который нужно отправлять каждый раз при использовании апи тг
public function __construct($token) {
$this->token = $token; //Забиваем в переменную токен при конструкте класса
}
public function send($id, $message) { //Задаём публичную функцию send для отправки сообщений
//Заполняем массив $data инфой, которую мы через api отправим до телеграмма
$data = array(
'chat_id' => $id,
'text' => $message,
);
//Получаем ответ через функцию отправки до апи, которую создадим ниже
$out = $this->request('sendMessage', $data);
//И пусть функция вернёт ответ. Правда в данном примере мы это никак не будем использовать, пусть будет задаток на будущее
return $out;
}
public function request($method, $data = array()) {
$curl = curl_init(); //мутим курл-мурл в переменную. Для отправки предпочтительнее использовать курл, но можно и через file_get_contents если сервер не поддерживает
curl_setopt($curl, CURLOPT_URL, 'https://api.telegram.org/bot' . $this->token . '/' . $method);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); //Отправляем через POST
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data); //Сами данные отправляемые
$out = json_decode(curl_exec($curl), true); //Получаем результат выполнения, который сразу расшифровываем из JSON'a в массив для удобства
curl_close($curl); //Закрываем курл
return $out; //Отправляем ответ в виде массива
}
}
Всё! Всё что осталось - это указать в настройках бота ссылку на наш webhook.php, на который будут приходить уведомления от телеграмма. Для этого нужно перейти по ссылке:
https://api.telegram.org/botТОКЕНБОТА/setWebhook?url=ССЫЛКА_НА_WEBHOOK.PHP
