среда, 9 декабря 2015 г.

Бот для Telegram на PHP

Летом 2015 года Telegram открыл публичный доступ к API для реализации ботов. Возможности довольно широкие, ознакомиться можно на официальном сайте.

В этой статье рассмотрим реализацию простейшего бота на PHP, который будет отправлять уведомления о новых сообщения на сайте в группу. 

Для начала необходимо зарегистрировать нового бота. Для этого в Telegram реализован бот с именем BotFather, находим его в контактах и начинаем чат с ним.



  1. Отправляем команду /newbot
  2. Вводим название нашего бота - My Simple Bot
  3. Вводим имя нашего бота - mysimplebot (обратите внимание, что имя любого бота обязательно должно заканчиваться на bot)
  4. Если всё прошло успешно - получаем token для использования API, который необходимо сохранить.

Проверить, что token верный и наш бот зарегистрирован можно по ссылке https://api.telegram.org/bot<TOKEN>/getMe

В результате должны получить сообщение в формате JSON следующего вида
 {"ok":true,"result":{"id":132519463,"first_name":"My Simple Bot","username":"MySimpleBot"}}  

Следующим шагом необходимо определить id чата, в который будет писать бот. Для этого находим бота в контактах и пишем ему тестовое сообщение.
Для просмотра всех чатов, в к которых участвует бот, перейдем по ссылке https://api.telegram.org/bot<TOKEN>/getUpdates 

Результат:
 {"ok":true,"result":[{"update_id":774188466,  
 "message":{"message_id":1,"from":{"id":45512296,"first_name":"hidden","last_name":".","username":"hidden"},"chat":{"id":45512296,"first_name":"","last_name":".","username":"","type":"private"},"date":1449648989,"text":"\/start Start"}},{"update_id":774188467,  
 "message":{"message_id":2,"from":{"id":45512296,"first_name":"hidden","last_name":".","username":"hidden"},"chat":{"id":45512296,"first_name":"","last_name":".","username":"","type":"private"},"date":1449648994,"text":"Test"}}]}  

Искомое значение id чата выделено красным - сохраняем его.

Для проверки отправки сообщений сформируем ссылку вида
https://api.telegram.org/bot<TOKEN>/sendMessage?text<ТЕКСТ СООБЩЕНИЯ>&chat_id=<ID ЧАТА>
Если все прошло успешно, то сообщение появится в чате.

Остается только добавить отправку GET запроса в метод обработки сообщения на вашем сайте.

Самый простой вариант:
 $response = file_get_contents("https://api.telegram.org/bot<TOKEN>/sendMessage?text='.urlencode($message).'&chat_id=<ID ЧАТА>');  
*параметры <TOKEN> и <ID ЧАТА> необходимо заменить на полученные ранее.



Комментариев нет:

Отправить комментарий