Как направить запрос в Телеграм?

Рассмотрим несколько вариантов, как можно направить запрос в Телеграм на PHP.

Запрос в Телеграм можно направить методами POST и GET. Точка входа (адрес) API для всех случаев одна и та же:

https://api.telegram.org/bot<TOKEN_BOT>/

Для того чтобы Телеграм понял от имени какого бота направляется запрос, в адрес подставляется уникальный токен бота. Получить или заменить токен бота можно через специальный сервис @BotFather

В API BOT есть много методов для выполнения действий от имени бота. Мы рассмотрим один из основных - это sendMessage(). Этот метод имеет на момент написания этого текста 2 обязательных параметра:

  1. chat_id - это id чата куда направляется текстовое сообщение, это может быть приватный чат, группа или канал
  2. text - текстовая часть запроса
TOKEN_BOT - необходимо заменить на токен вашего бота

* * *

Способ первый

Самый простой способ это направить 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);
6 комментариев
Авторизуйтесь через Telegram, чтобы оставить комментарий.
Откройте бот @iMakeBot, нажмите кнопку Старт/Start. Следуйте инструкциям бота.

  • Andrew° [2 месяца назад]

    Спасибо! Ютуб канал ввести не помешало бы тебе

  • iMakeBots [2 месяца назад → Andrew°]

    Спасибо, но для меня - статьи интереснее делать, мысль пришла, открыл редактор и сделал. Видео формат - много подготовки нужно. 

  • 🄰 🄿 🅃 🄴 🄼 🄾 🄷 🕷️ [2 месяца назад]

    POSTMan

    Cli cUrl

  • iMakeBots [2 месяца назад → 🄰 🄿 🅃 🄴 🄼 🄾 🄷 🕷️]

    Спасибо. Для тестирования или не в рамках приложения, тоже сгодиться. 

  • Sergey Michaylovich [2 недели назад]

    Здравствуйте!
    Спасибо за статью! Только у меня остался вопрос. А как узнать chat_id?
    Может ли бот направить сам сообщение мне и другим пользователям, которые на него не подписаны (не стартовали в нём)? Вроде мне приходят периодически спам-сообщения от непонятных телеграмм аккаунтов и вроде от ботов.

  • iMakeBots [2 недели назад → Sergey Michaylovich]

    В приведенных примерах только отправка запроса, если вам надо узнать chat_id из данных, которые отправляет бот, то это свойство находиться в разных местах в зависимости от типа объекта update

    На ряду с Telegram Bot API есть еще Telegram Core Api. С его помощью можно сделать бота, который будет идентифицироваться как пользователь со всеми возможностями Telegram