Пример создания бота Telegram на PHP

Для начала создайте самого бота с помощью бота в телеграмм @BotFather. Написав ему команду:

/newbot

Укажите имя бота (как он будет называться)
Далее укажите username (ник бота).

После чего бот Вам отправит ссылку на созданного Вами бота и его токен вида: 999999999:AA8FWF2KK-Hif882_igwegn-JIBfw9wefhwef

Приступим к самому функционалу бота. На хостинге или же на VPS у вас должен быть работающий домен и SSL сертификат (Let’s Encrypt тоже работает).

Заходим на сервера(хостинг) под SSH, создайте папку где будут расположены файлы бота (папка должна находиться в папке домена) и перейдите в нее:

mkdir bot ; cd bot

Создайте файл bot.php, в котором и будет размещен весь функционал бота и запишем в него соответственный код:

nano bot.php

Код:

<?php
include('vendor/autoload.php'); //Подключаем библиотеку
use Telegram\Bot\Api; 

$telegram = new Api('999999999:AA8FWF2KK-Hif882_igwegn-JIBfw9wefhwef'); //Устанавливаем токен, полученный у BotFather
$result = $telegram -> getWebhookUpdates(); //Передаем в переменную $result полную информацию о сообщении пользователя

$text = $result["message"]["text"]; //Текст сообщения
$chat_id = $result["message"]["chat"]["id"]; //Уникальный идентификатор пользователя
$name = $result["message"]["from"]["username"]; //Юзернейм пользователя
$keyboard = [["/start"],["/help"]]; //Клавиатура

if($text){
if ($text == "/start") {
$reply = "Привет, поговорим?)) ";
$reply_markup = $telegram->replyKeyboardMarkup([ 'keyboard' => $keyboard, 'resize_keyboard' => true, 'one_time_keyboard' => false 
]);
$telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => $reply, 'reply_markup' => $reply_markup ]);
}elseif ($text == "/help") {
$reply = "Я тестовый бот на PHP";
$telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => $reply ]);
}elseif ($text == "Картинка") {
$url = "https://68.media.tumblr.com/6d830b4f2c455f9cb6cd4ebe5011d2b8/tumblr_oj49kevkUz1v4bb1no1_500.jpg";
$telegram->sendPhoto([ 'chat_id' => $chat_id, 'photo' => $url, 'caption' => "На." ]);
}elseif ($text == "Гифка") {
$url = "https://68.media.tumblr.com/bd08f2aa85a6eb8b7a9f4b07c0807d71/tumblr_ofrc94sG1e1sjmm5ao1_400.gif";
$telegram->sendDocument([ 'chat_id' => $chat_id, 'document' => $url, 'caption' => "На." ]);
}elseif ($text == "Сказать шутку") {
$reply .= "У сороконожки 20 пиписек";
$telegram->sendMessage([ 'chat_id' => $chat_id, 'parse_mode' => 'HTML', 'disable_web_page_preview' => true, 'text' => $reply ]);
}elseif ($text == "Привет") {$reply .= "Здравствуй";$telegram->sendMessage([ 'chat_id' => $chat_id, 'parse_mode' => 'HTML', 'disable_web_page_preview' => true, 'text' => $reply ]);}
else{
$reply = "Прости, я не знаю что ответить на:" .$text. "\nМеня еще не научили";
$telegram->sendMessage([ 'chat_id' => $chat_id, 'parse_mode'=> 'HTML', 'text' => $reply ]);
}
}else{
$telegram->sendMessage([ 'chat_id' => $chat_id, 'text' => "Отправьте текстовое сообщение." ]);
}
?>

Замените токен на токен Вашего бота в пятой строчке кода.
Как видно, у бота будет две кнопки /start и /help которые вы можете изменить, добавить и удалить. Так же по запросу «Картинка» бот отправит вам картинку, по запросе «Гифка» — бот отправит гифку, по запросу «Сказать шутку» — бот отправит шутку. Если отправить боту то, на что у него нет ответа — бот скажет что не знает как ответить. Вы же можете добавлять или изменять функционал как угодно.
Так как мы пишем бота на PHP, установим библиотеку. В консоли SSH находясь в папке бота выполните команду:

composer update -v

После чего должна появиться папка vendor.

Потом мы должны указать боту телеграмм на файл с функционалом (Webhook)
Для этого в браузере перейдите по специальной ссылке:

https://api.telegram.org/bot999999999:AA8FWF2KK-Hif882_igwegn-JIBfw9wefhwef/setWebhook?url=https://example.com/bot/bot.php

Где:
999999999:AA8FWF2KK-Hif882_igwegn-JIBfw9wefhwef — токен вашего бота
https://example.com/bot/bot.php — ссылка к файу бота.

Сделав запрос Вы должны получить JSON-ответ со значением «Webhook was set»,

После чего напишите боту запрос, который указан в функционале и проверьте работает ли.