Отправка сообщений в 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

  1. // описание метода api telegram
  2. // https://core.telegram.org/bots/api#sendmessage
  3.  
  4. $tg_user = '1234567890'; // id пользователя, которому отправиться сообщения
  5. $bot_token = '1234567890:XXXXXX'; // токен бота
  6.  
  7. $text = "Первая строка сообщения";
  8.  
  9. // параметры, которые отправятся в api телеграмм
  10. $params = array(
  11. 'chat_id' => $tg_user, // id получателя сообщения
  12. 'text' => $text, // текст сообщения
  13. 'parse_mode' => 'HTML', // режим отображения сообщения, не обязательный параметр
  14. );
  15.  
  16. $curl = curl_init();
  17. curl_setopt($curl, CURLOPT_URL, 'https://api.telegram.org/bot' . $bot_token . '/sendMessage'); // адрес api телеграмм
  18. curl_setopt($curl, CURLOPT_POST, true); // отправка данных методом POST
  19. curl_setopt($curl, CURLOPT_TIMEOUT, 10); // максимальное время выполнения запроса
  20. curl_setopt($curl, CURLOPT_POSTFIELDS, $params); // параметры запроса
  21. $result = curl_exec($curl); // запрос к api
  22. curl_close($curl);
  23.  


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


  20.04.24 / 20:18 | PHP |   122 | 2   0