Запрос в Телеграм можно направить методами POST
и GET
. Точка входа (адрес) API для всех случаев одна и та же:
https://api.telegram.org/bot<TOKEN_BOT>/
Для того чтобы Телеграм понял от имени какого бота направляется запрос, в адрес подставляется уникальный токен бота. Получить или заменить токен бота можно через специальный сервис @BotFather
В API BOT есть много методов для выполнения действий от имени бота. Мы рассмотрим один из основных - это sendMessage(). Этот метод имеет на момент написания этого текста 2 обязательных параметра:
- chat_id - это id чата куда направляется текстовое сообщение, это может быть приватный чат, группа или канал
- text - текстовая часть запроса
* * *
Способ первый
Самый простой способ это направить GET
запрос через браузер, сформируем адрес с необходимыми параметрами, вставим в адресную строку и нажмем Enter
https://api.telegram.org/bot<TOKEN_BOT>/sendMessage?chat_id=1000001&text=Hello
В приватный чат с id = 1000001 с ботом придет текстовое сообщение Hello, а после успешной отправки запроса на экран выведется строка в JSON формате
{
"ok": true,
"result": {
"message_id": 10,
"from": {
"id": 12345678,
"is_bot": true,
"first_name": "Test Bot",
"username": "TestBot"
},
"chat": {
"id": 1000001,
"first_name": "User",
"last_name": "Super",
"type": "private"
},
"date": 1666004498,
"text": "Hello"
}
}
* * *
Способ второй
Этот способ тоже для GET
запроса, только направлять мы его будем через php скрипт, используя одну из подходящих для этого функций file_get_contents()
$url = "https://api.telegram.org/bot<TOKEN_BOT>/sendMessage?chat_id=1000001&text=Hello";
$request = file_get_contents($url);
В переменной $request
будет лежать результат отправки запроса.
* * *
Способ третий
Для этого способа отправки методом POST
будем использовать возможности библиотеки cURL
// подготовим данные в формате массива
$data = [
"chat_id" => 1000001,
"text" => "Hello"
];
// откроем соединение
$ch = curl_init("https://api.telegram.org/bot<TOKEN_BOT>/sendMessage");
// определим опции
curl_setopt_array($ch, [
// это POST запрос, значение
CURLOPT_POST => true,
// передадим данные в url-закодированной строки
CURLOPT_POSTFIELDS => http_build_query($data),
// отключим проверку сертификата узла сети
CURLOPT_SSL_VERIFYPEER => false,
// получим результат в ответ
CURLOPT_RETURNTRANSFER => true,
// время на выполнение запроса
CURLOPT_TIMEOUT => 10
]);
// спарсим в объект результат запроса
$result = json_decode(curl_exec($ch), true);
// закроем соединение
curl_close($ch);
Откройте по ссылке или QR бот @iMakeBot, нажмите кнопку Старт/Start.
Следуйте инструкциям бота.
Спасибо! Ютуб канал ввести не помешало бы тебе
Спасибо, но для меня - статьи интереснее делать, мысль пришла, открыл редактор и сделал. Видео формат - много подготовки нужно.
POSTMan
Cli cUrl
Спасибо. Для тестирования или не в рамках приложения, тоже сгодиться.
Здравствуйте!
Спасибо за статью! Только у меня остался вопрос. А как узнать chat_id?
Может ли бот направить сам сообщение мне и другим пользователям, которые на него не подписаны (не стартовали в нём)? Вроде мне приходят периодически спам-сообщения от непонятных телеграмм аккаунтов и вроде от ботов.
В приведенных примерах только отправка запроса, если вам надо узнать chat_id из данных, которые отправляет бот, то это свойство находиться в разных местах в зависимости от типа объекта update
На ряду с Telegram Bot API есть еще Telegram Core Api. С его помощью можно сделать бота, который будет идентифицироваться как пользователь со всеми возможностями Telegram
См. здесь https://messenge.ru/kak-uznat-id-telegram/