Керування файлами cookie, які використовуються для реклами, таких як персоналізація реклами, ремаркетинг і аналіз ефективності реклами.
2.19.8. Приклад розміщення на хостингу Telegram-бота на PHP
Увага!
Бот може надсилати повідомлення тільки тим користувачам, які надіслали йому будь-яке повідомлення, не зупиняли його і не блокували.Для роботи з Telegram-ботом рекомендується використовувати Webhook. Такий метод кращий, ніж Long Polling, з кількох причин:
- Скрипт, який запускається за допомогою Webhook, працює дещо швидше за скрипт, який оновлює інформацію з певним інтервалом.
- На віртуальному та бізнес-хостингу є обмеження на час виконання процесу, через що скрипт не може бути запущеним постійно й автоматично завершується системою. Це обмеження не можна обійти, тому використання скрипта, що постійно працює, може призвести до втрати даних, якщо під час обробки будь-якої події відбудеться завершення роботи цього скрипта.
Створення бота
- Ініціалізуйте створення нового бота — надішліть Telegram-боту @BotFather повідомлення
/newbot. - Бот запросить назву нового бота — надішліть повідомлення, яке буде прийняте як назва бота.
- Надішліть повідомлення з ім'ям бота. Ім'я відрізняється від назви тим, що є унікальним ідентифікатором, за допомогою якого можна використовувати запрошення, створювати посилання на нього тощо. У кінці імені обов'язково має бути слово
bot(наприклад,examplebotабоexample_bot). - У новому повідомленні буде вказаний токен, який потрібно буде використовувати для роботи бота. Збережіть цей токен.
Встановлення Webhook
Увага!
Для роботи Webhook на сайті обов'язково має використовуватися валідний SSL-сертифікат (наприклад, сертифікат від Let's Ecnrypt).Встановити Webhook можна кількома способами:
Перейдіть за посиланням виду:
https://api.telegram.org/bottoken/setWebhook?url=https://domain.com/path/to/file.php
У посиланні використовуйте свої дані:
token— токен, який ви отримали під час створення бота. ⚠️ Словоbotзмінювати передtokenне потрібно.domain.com— ваш домен, який Telegram використовуватиме для надсилання запитів вашому боту. Не рекомендується вказувати адресу з www або без www у разі, якщо встановлено редирект на зворотну адресу.path/to/file.php— шлях до файлу бота, який оброблятиме запити.
Після переходу за посиланням у браузері має з'явитися повідомлення виду «Webhook was set». Якщо таке повідомлення з'явилося, то Webhook встановлений коректно, в іншому разі перевірте URL-адресу, що використовується, і роботу SSL-сертифіката.
Увага!
У скрипті обов'язково має бути умова, яка обмежує кількість запусків для встановлення та перевірки Webhook, оскільки часте звернення до Telegram видаватиме помилку і припинятиме роботу скрипта.Додайте на початку вашого скрипта (після оголошення змінних із даними токена та імені бота) такий код:
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'] в якості одержувача
}
- Підключіться до хостингу по SSH.
- Перейдіть у каталог вашого сайту:
cd ~/example.com/www - Встановіть бібліотеку Telegram Bot SDK:
composer require irazasyed/telegram-bot-sdk - Створіть файл і помістіть у нього приклад найпростішого бота з використанням бібліотеки 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]); } }
(5)