Во втором уроке я вам покажу как создать бота для 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/
Добавить комментарий