Отправка сообщений в telegram с помощью php

Как настроить телеграм и как написать скрипт, который будет отправлять сообщения в чат постараюсь объяснить в этой статье.

Создание и настройка telegram бота для отправки сообщений
Напрямую скриптом отправлять сообщения в телеграм нельзя, но можно делать запросы к api ботов. Бот же в свою очередь будет делать то, что нам нужно – отправлять пользователю сообщения. Поэтому перед тем, как писать скрипт, нужно создать бота. В телеграм эта процедура занимает всего пару минут. Для создания и настроек есть официальный верифицированный бот: @BotFather. Откройте его в телеграм и отправьте команду «/newbot». Далее нужно будет придумать название и логин своему боту. Это все выполняется прямо в чате телеграм, ниже можете увидеть скрин переписки с ботом. После успешного создания и настроек, BotFather пришлет токен созданного бота. Токен потребуется для отправки запросов к api.

На этом настройка бота закончена. Но остался один момент – получение id пользователя телеграм, которому будет отправляться уведомления. Чтобы узнать свой id можно также воспользоваться ботами, их много. Я нашел вот такой: @getmyid_bot. Просто запустите бота и в ответ он напишет ваш ID.
У телеграм есть документация с описанием всех методов api, которые можно использовать. Документацию можно почитать тут: api ботов telegram.
В нашем случае всю документацию читать не придется, достаточно только одного метода – sendmessage. Он позволяет отправлять сообщения пользователям, которые начали диалог с ботом. У метода всего два обязательных параметра chat_id – ID пользователя или канала, который получит уведомление и text – текст сообщения. В скрипте я использовал еще третий параметр — parse_mode, он не обязательный, позволяет задать способ форматирования текста. По дефолту текст сообщения никак не форматируется. Parse_mode может принимать несколько значений: Markdown, MarkdownV2 и HTML. Пользоваться разметкой Markdown и MarkdownV2 я не умею, это телеграмовские теги. Поэтому выбрал HTML. Только обратите внимание, что это не полноценный html, теги поддерживаются не все. Подробнее можно почитать в документации.
На этом подготовка завершена, остается только написать код. Не забудьте открыть диалог со своим, только что созданным, ботом и запустить его. Если этого не сделать, то сообщения приходить не будут, а api в ответ на запросы будет присылать ошибки.
Php код для отправки сообщения в telegram

// описание метода api telegram 
// https://core.telegram.org/bots/api#sendmessage

$tg_user = '1234567890'; // id пользователя, которому отправиться сообщения
$bot_token = '1234567890:XXXXXX'; // токен бота

$text = "Первая строка сообщения";

// параметры, которые отправятся в api телеграмм
$params = array(
'chat_id' => $tg_user, // id получателя сообщения
'text' => $text, // текст сообщения
'parse_mode' => 'HTML', // режим отображения сообщения, не обязательный параметр
);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://api.telegram.org/bot' . $bot_token . '/sendMessage'); // адрес api телеграмм
curl_setopt($curl, CURLOPT_POST, true); // отправка данных методом POST
curl_setopt($curl, CURLOPT_TIMEOUT, 10); // максимальное время выполнения запроса
curl_setopt($curl, CURLOPT_POSTFIELDS, $params); // параметры запроса
$result = curl_exec($curl); // запрос к api
curl_close($curl);

var_dump(json_decode($result));


P.S. Чтобы получить свой id в телеграмм, можно написать любое сообщение боту, которого создали. А потом открыть в браузере ссылку: https://api.telegram.org/botтокен_бота/getUpdate Это объект с данными бота. Там можно найти свое сообщение, логин и id. Получение id можно автоматизировать и в ответ на старт бота отдавать ID пользователя, но это уже совсем другая история.


  20.04.24 / 17:18 | PHP |   230 | 2   0