
Отправка сообщений в Telegram из PHP-скриптов

Отправка сообщений в Telegram из PHP-скриптов
Достаточно долгое время у меня были настроены уведомления с сайта на ICQ, это было очень удобно. Потом что-то изменилось в протоколе авторизации мессенджера, уведомления перестали приходить, разбираться с этим мне было лениво, в результате последние пару лет я жил без оперативного информирования. Решив исправить эту ситуацию, я начал искать альтернативы из числа мессенджеров, которыми постоянно пользуюсь. Viber отпал из-за сложностей регистрации бот-аккаунтов, остался Telegram. Вот на нем я и сделал своего информационного бота для сайта.
Первым делом надо зарегистрировать бота. Для этого надо зайти в приложение Telegram и открыть чат с @BotFather. Откроется список команд, где надо выбрать /newbot. Затем система попросит выбрать название бота и его имя, по которому бот будет доступен для поиска. Если к названию особых требований нет, то имя должно обязательно быть уникальным и заканчиваться на "bot".

Регистрируем бота
Там же можно настроить описание и выбрать аватарку, но, на мой взгляд, для информационного бота это уже лишнее.

Получаем токен
Когда все основные параметры будут введены, система выдаст вам персональный токен, с помощью которого можно будет работать с ботом через HTTP-запросы. Никому не передавайте этот токен, чтобы никто посторонний не получил к нему доступ. Если все же произошла утечка данных, то через @BotFather можно сгенерировать новый токен для вашего бота.
Если в настройках бота включен режим приватности (а он включен по умолчанию), то все сообщения, отправляемые ботом конкретному пользователю, не будут видны остальным подписчикам этого бота. Именно это нам и надо, ведь мы же не хотим, чтобы кто-то, случайно подписавшись на нашего бота, перехватывал все наши уведомления. Чтобы бот отправлял сообщения только нам, надо узнать идентификатор нашего чата.

Отправляем сообщение боту
Для этого подпишитесь на своего бота и отправьте ему любое сообщение. После этого в браузере надо сформировать ссылку следующего вида:
https://api.telegram.org/bot[token]/getUpdatesгде [token] - это токен, полученный при регистрации бота. Например, для нашего бота ссылка будет вот такой:
https://api.telegram.org/bot629705209:AAFhFqFbhR3VHHrOgOM7R4OnQT-usqJwTBk/getUpdates
Если все сделано правильно, то в браузере откроется что-то подобное:
{"ok":true,"result":[
{
"update_id":434540657,
"message":{
"message_id":3,
"from":{
"id":698237240,
"is_bot":false,
"first_name":"Dmitry",
"language_code":"ru"
},
"chat":{
"id":698237240,
"first_name":"Dmitry",
"type":"private"
},
"date":1536053889,
"text":"Hello"
}
}
]}
Красным цветом выделен нужный нам идентификатор чата. Если ответ пустой, то напишите боту еще парочку сообщений в чат и сразу же обновите страницу в браузере. В связи с недавними событиями по неудачной блокировке Telegram недоумками из Роскомнадзора, сайт api.telegram.org у некоторых провайдеров может оказаться недоступен. В этом случае придется воспользоваться Tor Browser или каким-нибудь другим инструментом для обхода блокировок.
Теперь переходим к самому интересному - отправке сообщений из скрипта в наш чат. Для этого в API Telegram есть метод sendMessage. Он принимает как GET, так и POST запросы. Обязательными параметрами являются chat_id - идентификатор чата и text - текст сообщения. Пример вызова будет таким:
Code (PHP) : Убрать нумерацию
- // Токен бота и идентификатор чата
- $token='629705209:AAFhFqFbhR3VHHrOgOM7R4OnQT-usqJwTBk';
- $chat_id='698237240';
- // Текст сообщения
- $text='Привет, мир!';
- // Отправить сообщение
- $ch=curl_init();
- curl_setopt($ch, CURLOPT_URL,
- 'https://api.telegram.org/bot'.$token.'/sendMessage');
- curl_setopt($ch, CURLOPT_RETURNTRANSFER,