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

Обновлено и опубликовано Опубликовано:

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

Подготовка

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

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

Приступим.

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

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

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

Переходим в чат с найденным BotFather и запускаем бота:

Запускаем BotFather

Создаем бота, последовательно введя команду /newbot и отвечая на запросы мастера. Например:

/newbot

dmosk_digest

DmoskDigestBot

* где:

  • /newbot — команда для создания нового телеграм бота.
  • dmosk_digest — имя бота.
  • DmoskDigestBot — имя учетной записи бота. Обязательно должно быть Bot на конце.

В результате мы должны получить сообщение на подобие:

Done! Congratulations on your new bot. You will find it at t.me/DmoskDigestBot. 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=@dmosk_ru&text=test'

* где:

  • 1234567890:ABCDEFGHIYKLMNOPI8e48SeTHIGfzD8W4E — токен бота, который мы получили ранее.
  • @dmosk_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.  
  3. $chat_name = "@dmosk_ru";
  4. $token = "1234567890:ABCDEFGHIYKLMNOPI8e48SeTHIGfzD8W4E";
  5. $message = "Здравствуйте.\nЭто тестовое сообщение, отправленное ботом с помощью PHP-скрипта.\n\nВсем хорошего дня.";
  6.  
  7. $text = urlencode($message);
  8. $url = "https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_name}&text={$text}";
  9.  
  10. $ch = curl_init();
  11. $optArray = array(
  12.     CURLOPT_URL => $url,
  13.     CURLOPT_RETURNTRANSFER => true
  14. );
  15. curl_setopt_array($ch, $optArray);
  16. $result = curl_exec($ch);
  17. curl_close($ch);
  18.  
  19. ?>

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

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

Да            Нет