Как отправить сообщение в группу через бота?
Написал бота, который при нажатии на кнопку должен присылать сообщение в открытую группу, а так же сам код для отправки (важно: нужно именно прислать новое сообщение, а не переслать из чата с ботом существующее)
if ($answers[$callback_data]) < $answer = $answers[$callback_data]; $post = [ 'chat_id' =>$user_id, 'message_id' => $message_id, 'text' => $answer["answer_text"], 'parse_mode' => 'html', ]; if ($answer["support_available"]) < $buttons = array_merge($buttons, [['text' =>'Начать диалог', 'callback_data' => 'contact_' . $callback_data]]); > > else < $explode_data = explode('_', $callback_data, 2); $prefix = $explode_data[0]; >if ($prefix === 'contact') < // прислать сообщение в группу // $send_answers = $explode_data[1]; $post = [ 'chat_id' =>GROUP_ID, 'text' => 'aaa' ]; telegram('sendMessage', $post);
> Бот в группе является администратором, но сообщения все равно не присылаются при нажатии на кнопку с префиксом contact, возможно что-то упустил важное, но пока не могу найти что именно
Создание Telegram бота на PHP #1: основные понятия для работы с API
Всем привет, это первый урок из курса по разработке ботов для Telegram. В данном курсе, мы с вами разберём как создавать ботов для Telegram на PHP. Я расскажу вам как отправлять текстовые сообщения, как отправлять файлы, как получать и обрабатывать сообщения от пользователей и по итогу мы с вами напишем скрипт для быстрого создания бота для Telegram на PHP.
В первом уроке мы с вами рассмотрим основные понятия связанные с API. Я вам расскажу что такое API методы, хуки, покажу на примере Telegram построение URL для создания запросов и расскажу о том как создаются простые API запросы на PHP.
Полный список всех записей курса находится на сайте или в публикациях на Хабр.
Для отправки и получения запросов через API, вам лучше использовать виртуальный хостинг, так как локальный хостинг не сможет получать данные через хуки.
Основные понятия
Давайте рассмотрим основные понятия для работы с API.
API (Application Programming Interface) — это набор способов и правил, по которым различные программы общаются между собой и обмениваются данными.
Метод API — это определённое действие, которое должно выполнить приложение основываясь на полученных данных (отправить сообщение, вернуть список чатов, отправить картинку и т.д.)
Token (токен) — это уникальный ключ бота, необходимый для отправки запросов.
Как отправлять HTTP запросы на PHP
Для отправки HTTP запросов можно использовать функцию file_get_contents(), где в качестве первого главного параметра указывается ссылка. Данная функция отлично подходит для отправки GET запросов, но к сожалению с помощью функции file_get_contents() нельзя отправлять POST запросы и поэтому для отправки POST запросов мы будем использовать библиотеку Curl.
Curl — это библиотека предназначенная для получения и передачи данных через такие протоколы, как HTTP, FTP, HTTPS.
Подробнее о Curl вы можете почитать на моём сайте.
Виды взаимодействия с приложением через API
Существует 2 вида взаимодействия с приложением через API. Первое это от клиента к серверу, а второе от сервера к клиенту. Клиентом в данном случае является ваше приложение (сайт), а в качестве сервера выступает сайт на который вы отправляете запросы (в нашем случае, это Telegram).
API запрос — это способ общения с программой, по средствам отправки данных от клиента — серверу.
Hooks (Хуки) — это способ общения с программой, по средствам отправки данных от сервера — клиенту. То есть при определённых изменениях в программе, сервер (приложение) будет отправлять данные на указанный скрипта клиента.
Документация для работы с API Telegram
Все методы и параметры для запросов вы можете найти в официальной документации Telegram.
К данному сайту мы будем ссылаться на протяжение всего курса.
Работа с документацией для Telegram
Документация для создания Telegram ботов разделена на несколько разделов.
В разделе Recent changes вы можете найти информацию об обновлениях Telegram. Здесь описаны версии и нововведения которые были внесены в функционал мессенджера.
Разделы Authorizing your bot и Making requests описывают способы авторизации ботов и способы создания запросов для работы с ботами.
Раздел Getting updates описывает способы получения обновлений взаимодействия с ботами. При взаимодействие пользователя с ботов, все его действия, по стандарту, записываются на сервера Telegram, и для того чтобы получить к ним доступ, необходимо отправить запрос getUpdates.
Отправив запрос getUpdates вы можете получить id последнего пользователя который написал боту, узнать его ник, текст сообщения и дату отправки. Если бот добавлен в сообщество, то вы можете получить id сообщества.
В разделе Getting updates так же описаны правила настройки хуков, что позволяет отправлять любые изменения на сервер разработчика. Но об этом мы поговорим позднее, сейчас давайте продолжим знакомство с документацией.
Следующий раздел, который нас интересует называется — Available types. Данный раздел описывает все типы данных которые возвращает нам Telegram. Когда ваш скрипт отправляет запрос, то обработав его, Telegram вернёт вам ответ в формате JSON строки, в котором описаны специальные параметры.
Например если вы отправляете сообщение, то Telegram вернёт вам массив в котором указаны id созданного сообщения, id пользователя, дата создания сообщения и много другое. Все эти данные вы можете разобрать и записать в базу данных.
Далее описан раздел, с которым нам придётся работать больше всего — это Available methods, методы для взаимодействия с ботом. Советую вам пройтись по всем методам и изучить все возможности работы с ботами.
Вкратце скажу что здесь описаны методы для отправки сообщений, файлов, изображений и многое другое. Все методы имеют понятные названия и описанные параметры, что позволяет легко читать документацию, даже без знания английского языка.
Ну и в конце у нас описаны методы для работы со стикерами, играми в Telegram, методы для работы с оплатой в Telegram.
Структура URL для отправки запросов в Telegram
API Telegram имеет простую и понятную структуру урлов для отправки запросов.
Вот пример URL для создания запросов к боту:
https://api.telegram.org/bot/
— это уникальный ключ, который выдаётся при создание бота;
— это метод запроса по которому мы будем получать или отправлять определённые данные. В зависимости от названия метода, мы будем выполнять разные действия.
Примеры URL для запросов
Данные примеры используются только для наглядности построения URL, токен указанный в URL не привязан ни к одному боту!
Вот так выглядит отправка сообщений методом GET. Первая часть URL содержит домен api.telegram.org, далее прописываем строку bot с токеном который нам даётся при создание бота, после чего указываем метод sendMessage и перечисляем GET параметры.
https://api.telegram.org/bot546445612928:AAHjk6643OYgWHim_TICgsaF9NDDVXYnKzA/sendMessage?chat_id=&text=
Отправка файлов в чат выглядит аналогично, только метод sendMessage заменяется на sendDocument. И здесь не перечисляются GET параметры, после указания метода, так как мы отправляем данные методом POST.
https://api.telegram.org/bot543264456928:AAHjk6643OYgWHim_TICgsaF9NDDVXYnKzA/sendDocument
Отправка изображений в чат:
https://api.telegram.org/bot546413456928:AAHjk6643OYgWHim_TICgsaF9NDDVXYnKzA/sendPhoto
На этом знакомство с документацией Telegram заканчивается. В следующем уроке, мы с вами создадим первого бота и попробуем отправить простые запросы.
- боты телеграм
- боты для мессенджеров
- боты для социальных сетей
- боты телеграмма
- php
- curl
Создание Telegram бота на PHP #2: создание первого бота для Telegram
Во втором уроке я вам покажу как создать бота для Telegram и мы попробуем отправить несколько сообщений в чат.
Для того чтобы создать бота, нам необходимо сделать несколько последовательных действий.
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":
Пример отправки сообщения боту в 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 https://prog-time.ru/parsing-php-biblioteka-curl/" rel="noopener noreferrer nofollow">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 возвращает ответ с описание результата запроса.
Настройка telegram бота для отправки сообщений

Cкриптом напрямую отправлять сообщения в телеграм не получится, но у нас есть возможность делать GET или POST запросы к api ботам. А Telegram Bot - уже может отправлять пользователю любые сообщения. Поэтому перед написанием php скрипта, нужно создать телеграм бота. Тут все просто и займет всего пару минут. Переходим по ссылке на официальный верифицированный бот: @BotFather. Открываем его в телеграм и выбираем команду «/newbot».
Далее прямо в чате телеграм придумываем и вписываем новое название и логин своему боту.
После успешного создания, BotFather в чат пришлет токен созданного бота для отправки запросов к api (token to access the HTTP API).
После этого нам еще нужно получить id пользователя телеграм, которому и будут в дальнейшем отправляться сообщения.
Чтобы узнать свой telegram id перейдите по ссылке: @getmyid_bot и запустите бота в своем телеграм. В ответ вы получите свой идентификатор - ID.
Полученные данные от @BotFather и @getmyid_bot отправляете разработчикам вашего сайта, которые добавят их в форму обратной связи и с сайта начнут приходить сообщения в телеграм.
Отправка телеграм сообщения через строку браузера

Чтобы отправить сообщение себе через telegram бота, воспользуйтесь API методом sendMessage. Для в вашем браузере прописываем следующий адрес, и вместо token и chat_id ставим свои данные. Вводим запроc, нажимаем на enter и наш бот получает первое сообщение!
Отправка телеграм сообщения на PHP через форму обратной связи
У сервиса Telegram есть документация с подробным описанием всех функций и методов api, для использования. Ссылка на документацию тут: https://core.telegram.org/bots/api. Для разработки сайта на PHP в Киеве можно воспользоваться примером отправки POST запроса с функцией telegram API - sendMessage
Помогла ли вам статья?
