Как сделать своего бота для Телеграма

20 October 2016, 21:54 MSK
Привет, ребзя. Наверное, вы давно мечтали сделать собственного телеграм-бота, но не знали как? Сегодня я вам расскажу! Наш бот будет простым: он будет принимать сообщения от пользователей и отвечать на них.
telegram
Вообще, у Телеграма есть понятное и подробное API на сайте, но оно на английском языке (учите английский, всегда пригодится :-). Управление ботами происходит необычным образом: через другого специального (служебного) бота @BotFather. Для начала нужно добавить его в контакт-лист и что-нибудь ему написать, после чего вы увидите список доступных команд. Отправьте боту команду /newbot, затем напишите в чат имя вашего бота (любое, например, Trademark Checker), затем напишите уникальный логин вашего бота (должен заканчиваться на «bot», например, OnlinePatentRobot). В ответ вы получите авторизационный токен — сохраните его и никому не сообщайте.
Изучите список доступных команд для управления ботом. Например, команда /setdescription позволяет задать описание бота, а /setuserpic — установить аватар.
И так, бот создан. Но в текущем виде он малопригоден для использования, так как не будет реагировать на какие-либо команды. Для реализация функционала мы напишем простой скрипт на PHP. Этот скрипт необходимо разместить на сайте, который доступен по безопасному протоколу HTTPS (для этого вам понадобится SSL-сертификат, но это тема для отдельной заметки).
Далее необходимо сообщить боту адрес скрипта для обработки сообщений. Для этого проще всего открыть в браузере следующую ссылку: http://api.telegram.org/bot<TOKEN>/setWebhook?url=<URL>, здесь замените <TOKEN> на полученный авторизационный токен, а <URL> — на адрес вашего PHP скрипта (например, http://example.com/bot<XXXXX>.php, где в качестве <XXXXX> используйте какой-нибудь набор символов, чтобы на всякий случай больше никто не мог получить доступ к этому скрипту).
Ниже код самого скрипта с комментариями. В данном примере бот будет ожидать в сообщении ваше имя и отвечать приветствием.
<?php
// получаем запрос от Телеграма $pack = file_get_contents("php://input"); $pack = json_decode($pack, 1); if (!$pack) die();
// вытаскиваем текст сообщения $message_id = @$pack['message']['message_id']; $chat_id = @$pack['message']['chat']['id']; $text = @$pack['message']['text']; if (!$message_id || !$chat_id || !$text) die();
// отбрасываем служебные сообщения if (preg_match('#^/#uis', $text)) die();
// выполняем обработку сообщения $result = 'Привет, ' . $text . '!';
// формируем ответ Телеграму $answer = array(     'method' => 'sendMessage',     'chat_id' => $chat_id,     'reply_to_message_id' => $message_id,     'text' => $result, );
// отправляем ответ Телеграму header("Content-Type: application/json"); echo json_encode($answer);
Вы можете изменить код так, как пожелает ваша фантазия. Например, в качестве эксперимента я сделал бота @OnlinePatentRobot, который позволяет проверить, не зарегистрирована ли какая-нибудь фраза в качестве товарного знака. Если вы напишите ему в сообщении «Apple», то увидите, какие знаки зарегистрированы с этой фразой. Или напишите ему любое другое название, и, если оно свободно, то зарегистрируйте его на сайте onlinepatent.ru. А, если вы хотите, чтобы я сделал бота любой сложности для вас, пишите мне в Телеграм: @vkirkizh.
Тэги: PHPTelegramwebdev