Создание Telegram бота на PHP #2: создание первого бота для Telegram

от автора

Во втором уроке я вам покажу как создать бота для Telegram и мы попробуем отправить несколько сообщений в чат.

Полный список всех записей курса находится на сайте https://prog-time.ru/course_cat/telegram-bot-basic/ или в публикациях на Хабр https://habr.com/ru/users/Prog-Time/posts/

Для того чтобы создать бота, нам необходимо сделать несколько последовательных действий.

1) Вам нужно авторизоваться в Telegram аккаунте

2) В поиске найти пользователя @BotFather

3) Отправить сообщение боту — /newbot

4) После отправки запроса , нужно указать имя бота

5) После этого дублировать название бота, но только суффиксом _bot

6) После успешной регистрации бота, @BotFather пришлёт вам сообщение с токеном, который вам нужно сохранить, в дальнейшем он нам понадобится.

7) Теперь нам нужно создать чат в который мы добавим нашего бота

8) Далее нам нужно получить id нашего бота. Для этого нужно перейти по следующей ссылке, где вместо символов X нужно подставить ваш токен:
https://api.telegram.org/botXXXXXXXXXXXXXXXXXX/getUpdates
Не закрывайте эту страницу, после 9 пункта, её нужно будет обновить.

9) Теперь вам необходимо отправить команду /join в чат для активации бота. После отправки команды, вам нужно обновить страницу, чтобы сделать повторный запрос.

Здесь вам нужно записать следующий фрагмент кода — id вашего бота.

Вам нужен id со знаком минус.

"my_chat_member":{"chat":{"id":-594377170, ...

Пример отправки сообщения боту в Telegram

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

Здесь мы создаём переменные в которые заносим токен, id чата и сообщение. Сообщение мы прогоняем через функцию urlencode() для формирования специальный кодировки, для создания запросов.

А в конце мы используем функцию file_get_contents() для отправки запроса.

$token = "5340791844:AAEXXD786InvQrlWHRXykV91USOQSevrPVU"; $chat_id = -594377170;  $textMessage = "Тестовое сообщение"; $textMessage = urlencode($textMessage);  $urlQuery = "https://api.telegram.org/bot". $token ."/sendMessage?chat_id=". $chat_id ."&text=" . $textMessage;  $result = file_get_contents($urlQuery);

Данный метод рабочий, но он не удобен для создания сложной структуры приложения. Для более гибкой настройки лучше использовать библиотеку Curl.

Информацию по использованию данной библиотеке, вы можете получить в следующей записи — https://prog-time.ru/parsing-php-biblioteka-curl/

Давайте посмотрим код для запросов, с использованием Curl.

$token = "5340791844:AAEXXDduvInvQrlykV91USOQSevrPVU";  $getQuery = array(      "chat_id" => 1424625511,      "text"  => "Новое сообщение из формы",      "parse_mode" => "html", ); $ch = curl_init("https://api.telegram.org/bot". $token ."/sendMessage?" . http_build_query($getQuery)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HEADER, false);  $resultQuery = curl_exec($ch); curl_close($ch);  echo $resultQuery;

Теперь мы получили более удобочитаемый код, благодаря записи параметров в массив $getQuery. При такой структуре, вам не нужно переписывать URL запроса, изменения вносятся только в массив $getQuery, а функция http_build_query() сама добавит строку параметров в URL запроса.

В дальнейших уроках, мы будем пользоваться библиотекой Curl, но вы должны понимать что многие запросы можно отправлять через функцию file_get_contents. Нужно просто составить правильный URL.

У нас получилось отправить сообщение в Telegram с помощью нашего бота. Теперь давайте посмотрим на ответы которые отправляет нам Telegram.

Разбор ответа от Telegram.

При создании запроса к боту, Telegram всегда отправляет ответ, который вы можете записать в переменную и вывести на экран.

Если вы допустили ошибку, то вам придёт сообщение с параметрами, в которых указан код ошибки с описанием.

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

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

{   "ok": true,   "result": {     "message_id": 12,     "from": {       "id": 5340791844,       "is_bot": true,       "first_name": "test_prog_time",       "username": "test_prog_time_bot"     },     "chat": {       "id": 1424646511,       "first_name": "Илья",       "last_name": "Лящук",       "username": "iliyalyachuk",       "type": "private"     },     "date": 1658907913,     "text": "Новое сообщение из формы"   } }

В ответе мы видим следующее:

  • Параметр «ok» — описывает успешность отправки запроса

  • «result» — возвращает массив с данными ответа, в которых:

    • «message_id» — id созданного сообщения

    • «from» — кто отправил сообщение

    • «chat» — данные о чате в который попало сообщение

    • «date» — дата создания сообщения

    • «text» — текст сообщения

Подведём итог.

  • Все боты для Telegram создаются через BotFather

  • Для отправки запросов вы можете использовать функцию file_get_contents или воспользоваться библиотекой Curl

  • Каждый запрос в Telegram возвращает ответ с описание результата запроса.

Третий урок уже на Хабр — https://habr.com/ru/post/697002/


ссылка на оригинал статьи https://habr.com/ru/post/697000/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *