Скрипт PHP для отправки сообщений в телеграм

Рассмотрим простой сценарий отправки сообщения в канал телеграма с помощью бота. Скрипт будет написан на языке программирования PHP.

Подготовка

Прежде чем создать скрипт, нам нужно:

  • Создать телеграм бота.
  • Дать права созданному боту в канале, куда будем отправлять сообщения.
  • Убедиться в корректности настройки, отправив тестовое сообщение с помощью curl.
  • Установить php-расширение curl.

Приступим.

Создание бота

Открываем телеграм и ищем пользователя @BotFather :

Ищем @BotFather в телеграме

Переходим в чат с найденным 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

Теперь мы готовы писать скрипт.

Пример скрипта

Данный скрипт отправит простое текстовое сообщение в созданный ранее телеграм канал:

  1. <?php
  2. $chat_name = «@remontka_ru»;
  3. $token = «1234567890:ABCDEFGHIYKLMNOPI8e48SeTHIGfzD8W4E»;
  4. $message = «Здравствуйте.nЭто тестовое сообщение, отправленное ботом с помощью PHP-скрипта.nnВсем хорошего дня.»;
  5. $text = urlencode($message);
  6. $url = «https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_name}&text={$text}»;
  7. $ch = curl_init();
  8. $optArray = array(
  9. CURLOPT_URL => $url,
  10. CURLOPT_RETURNTRANSFER => true
  11. );
  12. curl_setopt_array($ch, $optArray);
  13. $result = curl_exec($ch);
  14. curl_close($ch);
  15. ?>

Описание скрипта:

Строка Описание
3 Переменная с указанием на имя канала, куда будет отправлено сообщение. У бота должны быть права отправки сообщения в данный канал.
4 Токен, который мы получили, когда создали бота.
5 Текст сообщения, которое будет отправлено в телеграм.
7 Прежде чем отправить сообщение, выполняем ее URL-кодирование, так как текст будет отправлен как часть GET-запроса.
8 Создаем переменную, значением которой будет строка обращения к Telegram API. Данная строка содержит токен, имя канала и текстовое сообщение. Действие будет sendMessage , то есть, отправка сообщения.
10 — 15 Инициализируем настройку curl. Указываем, что для запроса будет использоваться переменная $url. Также ответ от сервера должен возвращаться в виде строки, а не в поток вывода.
16 Выполняем запрос curl.
17 Удаляем все дескрипторы для запроса, чтобы не занимать память сервера.
EnglishRussianUkrainian