Ми використовуємо cookie-файли
Для оптимізації роботи нашого сайту ми використовуємо cookie-файли. Продовжуючи використовувати сайт, Ви погоджуєтеся з використанням cookie-файлів.
Новий дизайн
Панель керування
  • Русский
  • Українська
  • English
  • UAH
  • USD
  • RUB
  • EUR
  • 0-800-307-307 Гаряча лінія
  • +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 Київстар
  • +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]);
    }
}