Рассмотрим простой сценарий отправки сообщения в канал телеграма с помощью бота. Скрипт будет написан на языке программирования PHP.
Подготовка
Прежде чем создать скрипт, нам нужно:
- Создать телеграм бота.
- Дать права созданному боту в канале, куда будем отправлять сообщения.
- Убедиться в корректности настройки, отправив тестовое сообщение с помощью curl.
- Установить php-расширение curl.
Приступим.
Создание бота
Открываем телеграм и ищем пользователя @BotFather :
Переходим в чат с найденным BotFather и запускаем бота:
Создаем бота, последовательно введя команду /newbot и отвечая на запросы мастера. Например:
/newbot
remontka_digest
remontkaDigestBot
* где:
- /newbot — команда для создания нового телеграм бота.
- remontka_digest — имя бота.
- remontkaDigestBot — имя учетной записи бота. Обязательно должно быть Bot на конце.
В результате мы должны получить сообщение на подобие:
Done! Congratulations on your new bot. You will find it at t.me/remontkaDigestBot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you’ve finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.
Use this token to access the HTTP API:
1234567890:ABCDEFGHIYKLMNOPI8e48SeTHIGfzD8W4E
Keep your token secure and store it safely, it can be used by anyone to control your bot.
For a description of the Bot API, see this page: https://core.telegram.org/bots/api
* где 1234567890:ABCDEFGHIYKLMNOPI8e48SeTHIGfzD8W4E — токен бота. Его храним в безопасном месте.
Бот создан. Идем дальше.
Даем права боту отправлять сообщения в канал
Открываем наш телеграм канал, в который будут отправляться сообщения ботом. Добавляем бота в подписчики:
Мессенджер предложит назначить бота администратором. Соглашаемся и настраиваем разрешения. Как минимум, нужно разрешить отправку сообщений.
Теперь у нас есть все, чтобы сделать отправку сообщения в канал телеграма с помощью бота.
Делаем тестовую отправку сообщения
Нам, всего, нужно сделать запрос типа GET с синтаксисом:
https://api.telegram.org/bot<BotID>/sendMessage?chat_id=<ChannelName>&text=<Text>
Проще всего, для этого использовать утилиту командной строки curl. Для Windows она доступна в Powershell. Для Linux необходима установка (команда зависит от типа ОС):
а) Linux DEB (Debian / Ubuntu / Astra):
apt update
apt install curl
б) Linux RPM (Rocky / CentOS / РЕД ОС):
yum install curl
Теперь приведем реальный пример отправки сообщения с помощью curl.
Вводим команду:
curl ‘https://api.telegram.org/bot1234567890:ABCDEFGHIYKLMNOPI8e48SeTHIGfzD8W4E/sendMessage?chat_id=@remontka_ru&text=test’
* где:
- 1234567890:ABCDEFGHIYKLMNOPI8e48SeTHIGfzD8W4E — токен бота, который мы получили ранее.
- @remontka_ru — название телеграм канала.
- test — текст сообщения.
Проверяем сообщение в телеграм канале — мы должны увидеть наше тестовое сообщение:
Это значит, что наш бот может отправлять сообщения в канал.
Установка расширения php-curl
API телеграма реализовано с помощью сервиса, который отвечает на HTTP-запросы. В php данные запросы удобнее всего отправлять с помощью модуля curl. Необходимо убедиться, что он установлен.
Если наш скрипт будет запускаться из виртуального хостинга, скорее всего, данное расширение уже установлено в системе. В противном случае нужно поиграть с настройками хостинга или обратиться в техническую поддержку.
Если запуск скрипта выполняется на собственном сервере, установим расширение самостоятельно.
а) Linux DEB (Debian / Ubuntu / Astra):
apt install php-curl
Если у нас установлено несколько версий PHP, возможно, придется уточнить версию, для которой необходима установка расширения, например:
apt install php8.2-curl
б) Linux RPM (Rocky / CentOS / РЕД ОС):
yum install php-curl
Теперь мы готовы писать скрипт.
Пример скрипта
Данный скрипт отправит простое текстовое сообщение в созданный ранее телеграм канал:
- <?php
- $chat_name = «@remontka_ru»;
- $token = «1234567890:ABCDEFGHIYKLMNOPI8e48SeTHIGfzD8W4E»;
- $message = «Здравствуйте.nЭто тестовое сообщение, отправленное ботом с помощью PHP-скрипта.nnВсем хорошего дня.»;
- $text = urlencode($message);
- $url = «https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_name}&text={$text}»;
- $ch = curl_init();
- $optArray = array(
- CURLOPT_URL => $url,
- CURLOPT_RETURNTRANSFER => true
- );
- curl_setopt_array($ch, $optArray);
- $result = curl_exec($ch);
- curl_close($ch);
- ?>
Описание скрипта:
Строка | Описание |
---|---|
3 | Переменная с указанием на имя канала, куда будет отправлено сообщение. У бота должны быть права отправки сообщения в данный канал. |
4 | Токен, который мы получили, когда создали бота. |
5 | Текст сообщения, которое будет отправлено в телеграм. |
7 | Прежде чем отправить сообщение, выполняем ее URL-кодирование, так как текст будет отправлен как часть GET-запроса. |
8 | Создаем переменную, значением которой будет строка обращения к Telegram API. Данная строка содержит токен, имя канала и текстовое сообщение. Действие будет sendMessage , то есть, отправка сообщения. |
10 — 15 | Инициализируем настройку curl. Указываем, что для запроса будет использоваться переменная $url. Также ответ от сервера должен возвращаться в виде строки, а не в поток вывода. |
16 | Выполняем запрос curl. |
17 | Удаляем все дескрипторы для запроса, чтобы не занимать память сервера. |