Telegram-бот без сторонних библиотек

Практически все примеры в гугле которые я встречал разбираясь с 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