Управление файлами 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)