Мы используем cookie-файлы
Для оптимизации работы нашего сайта мы используем cookie-файлы. Продолжая использовать сайт, Вы соглашаетесь с использованием cookie-файлов.
Панель управления
  • Русский
  • Українська
  • UAH
  • USD
  • RUB
  • EUR
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепр
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 170-15-42  Life
  • +38(067) 400-88-44  Киевстар
  • +38(095) 630-90-82  Vodafone
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

2.27.1. Telegram-бот

Для работы с Telegram-ботом рекомендуется использовать метод обновления информации Webhook. Данный метод предпочтительнее, нежели Long Polling, из-за нескольких факторов:

  • Скрипт, запускающийся при помощи Webhook, работает несколько быстрее, чем тот, который обновляет информацию с определённым интервалом.
  • В рамках услуг виртуального и бизнес-хостинга существует ограничение на время выполнение процесса, в связи с чем скрипт не может находиться постоянно запущенным и будет автоматически завершён системой. Обойти данное ограничение нельзя, поэтому использование постоянно работающего скрипта может привести к утере данных, если во время обработки какого-либо события произойдёт завершение работы этого скрипта.

Для создания бота нужно выполнить следующие шаги:

  1. Написать в Telegram-боту @BotFather сообщение /newbot, для инициализации создания нового бота.
  2. Бот запросит указать название нового бота — нужно просто отправить сообщение, которое будет принято как название бота.
  3. Следующим шагом будет указание имени бота. Имя отличается от названия тем, что будет являться уникальным идентификатором, с помощью которого можно использовать приглашения, создавать ссылки на него и т. д. В конце имени обязательно должно быть указано слово bot. К примеру, examplebot или example_bot.
  4. В новом сообщении будет указан токе, который нужно будет использовать для работы бота. Сохраните данный токен.

Для установки Webhook можно воспользоваться несколькими способами:

Для установки Webhook в браузере достаточно перейти на определённый URL, который предварительно потребуется изменить.
https://api.telegram.org/bottoken/setWebhook?url=https://domain.com/path/to/file.php

Для следующих параметров подставьте свои значения:

  • token — укажите токен, полученный при создании бота. Обратите внимание, изменять перед token слово bot не нужно.
  • domain.com — корректно укажите доменное имя, которое будет в дальнейшем работать. Не рекомендуется указывать адрес с www или без www в случае, если установлен редирект на обратный адрес.
  • path/to/file.php — укажите корректный URL-адрес самого файла, который будет обрабатывать запросы бота.

После открытия такого адреса в браузере должно появиться сообщение на открытой странице вида «Webhook was set». Если такое сообщение появилось, то Webhook установлен корректно, в ином случае перепроверьте используемый URL-адрес и работу SSL-сертификата.

Для установки Webhook в скрипте достаточно в его начале, после объявления переменных с данными токена и имени бота, указать следующий код:

if(!json_decode(file_get_contents("https://api.telegram.org/name:token/setWebhook?url=https://domain.com/path/to/file.php"))->ok){die('webhook is not set');}

Для примера простейшего бота есть множество вариантов реализации. Но в данной статье будет рассмотрено два наипростейших.

Самый простой бот, который будет отвечать на сообщение /start, выглядит примерно так:
<?php
define('token','XXXXXXXXXXXXXXXXXXXXXXXXX'); // вместо ''XXXXXXXXXXXXXXXXXXXXXXXXX'' укажите ваш токен
$result = json_decode(file_get_contents('php://input'), true); // передаём в переменную $result полную информацию о сообщении пользователя
if ($result['message']['text'] == '/start') {
    file_get_contents("https://api.telegram.org/bot" . token . "/sendMessage?chat_id=" . $result['message']['chat']['id'] . "&text=" . urlencode('Hi')); // отправляем ответ пользователю, используя его уникальный идентификатор $result['message']['chat']['id'] в качестве получателя
}
Пример простейшего бота с использованием библиотеки Telegram Bot SDK выглядит примерно так:
<?php
include('vendor/autoload.php'); // подключаем библиотеку
use Telegram\Bot\Api; 
 
$telegram = new Api('XXXXXXXXXXXXXXXXXXXXXXXXX'); // вместо ''XXXXXXXXXXXXXXXXXXXXXXXXX'' укажите ваш токен
$result = $telegram -> getWebhookUpdates(); // передаём в переменную $result полную информацию о сообщении пользователя
 
$text = $result["message"]["text"]; // текст сообщения
$chat_id = $result["message"]["chat"]["id"]; // уникальный идентификатор пользователя
$name = $result["message"]["from"]["username"]; // имя пользователя
 
if ($text) {
    if ($text == "/start") {
        $reply = "Hi!";
        $telegram->sendMessage(['chat_id' => $chat_id, 'text' => $reply]);
    }
}