Categories: Скрипты

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

Рассмотрим простой сценарий отправки сообщения в канал телеграма с помощью бота. Скрипт будет написан на языке программирования 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

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

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

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

  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 Удаляем все дескрипторы для запроса, чтобы не занимать память сервера.
admin

Share
Published by
admin

Recent Posts

Настройка Mercurial по HTTPS

Иногда mercurial, при скачивании и комитах ругается на https. Особенно на самоподписанные сертификаты. Чтобы заработал…

1 месяц ago

Компиляция libvirt в Ubuntu

Компиляция libvirt Подробнее

1 месяц ago

Ошибка libvirt permission denied: решение

Если возникает ошибка libvirt destroy lxc permission denied , при попытке остановить контейнер: _x000D_# virsh…

1 месяц ago

Настройка редиректа в NGINX

Файлы с примерами редиректа для nginx Подробнее

1 месяц ago

Включение gzip в NGINX

Как включить gzip сжатие в Nginx ? Подробнее

1 месяц ago

Удаление postinst-скрипта в Linux

Иногда возникает ситуация, когда криво настроенные пакеты не устанавливаются в системе. У меня это произошло…

1 месяц ago