API Telegram Bot и PHP — Отправка сообщений

api telegram botНе так давно появилась необходимость реализовать отправку сообщений с сайта в Telegram Бот. Ранее описывал работу с API VK, где в случае получении капчи отправлялось сообщение на почту. Этот вариант меня не совсем устроил, бывают задержки, по этому решил освоить API Telegram. Всё достаточно просто, необходимо только создать Telegram Bot, получить ключ (он же token) и ID чата. Дальше просто отправляем сообщение по средствам PHP.

API Telegram Bot и PHP — Отправка сообщений

Создаём Telegram Bot.

Для начала нам необходимо создать нашего бота и получить ключ. Для этих целей разработчиками создан бот «@BotFather«. Нам необходимо написать боту в чат несколько сообщений с нужными нам параметрами:

1. Для начала пишем сообщение «/start«. Нам в ответ вернут все возможные команды бота. api telegram bot создаём бота

2. Отправляем боту команду «/newbot«.

3. Нам предлагают ввести имя нашего бота. Тут как вам будет угодно, я назвал «PechnekTest».

4. Теперь нам необходимо выбрать имя пользователя для бота, главное, что бы название нашего бота заканчивалось на «bot» (например  TestBot или Test_bot). В моём случае «PechnekTest_Bot»

5. После всего мы увидим поздравления и наш токен.

6. Теперь добавляем в друзья нашего бота. Можно искать по имени что мы задали ранее.

Получаем Chat ID  Telgram Bot -а.

Для того, что бы нам отправлять сообщения, нам необходимо узнать «chat id«, если по-простому, то идентификатор нашего чата. Для этого нам необходимо проделать ряд действий:

1. Написать что-то нашему боту, абсолютно любое сообщение. Нужно это для того, что бы мы могли достать наш chat id. Без этого метод API Telegram вернёт нам пустое значение.

2. В браузере выполняем следующую команду:

<token> — сюда вставляем ранее полученный токен.

3. В результате мы получим ответ в формате json в котором будет наш telegram чат ID.api telegram bot Получаем id чата

Отправляем сообщение средствами PHP в Telegram.

Теперь, когда мы получили token и ID чата телеграмм, мы можем проверить отправку сообщений в чат. Для этого необходимо в строку браузера ввести ссылку:

<token> —  Тут указываем наш токен.

<ID чата> — Здесь ID чата.

<text> — Тут любой текст.

Моя ссылка будет выглядеть так:

Вставляем наш запрос в строку браузера, получим примерно следующее:

api telegram bot отправляем сообщение

Заходим в телеграмм и видим наше сообщение.api telegram bot сообщение в чате

Значит наш метод работает.

Отправка сообщения по средствам PHP.

Теперь самое вкусное. Реализуем отправку сообщений через PHP.

У меня была задача, необходимо было отлавливать ошибку в текстовом файле, после чего отправлять на почту. Реализовывал данный способ в данной статье: API VK и PHP — Автопостинг сообщений в группах. Решил заменить почту на телеграмм. В итоге написал такой скрипт:

К примеру у меня есть файл mess.txt, в нём ищем текст «error«, если текст найден, то выполняем запрос. В результате отправим сообщение в телеграмм.

По скрипту внёс комментарии, но всё же немного разжую.

mess.txt — тут указываем путь к файлу в котором будем искать.

error — текст который мы ищем в файле, в моём случае «error»

$token — Тут токен telegram bot -а, который мы получали ранее.

$chatid — ID чата телеграмма.

$mess — сообщение, которое мы отправляем в телеграмм

$tbot — тут запрос к API телеграмма, в неё подставляем значения из переменных.

Копируем наш скрипт в файл, с расширением «.php», желательно через Notepad++, и не забывайте менять кодировку на «UTF-8», иначе получите на выходе «кракозябры». Заливаем файл на хостинг. Дальше в браузере переходим по ссылке «Ваш домен/название файла.php», в моём случае будет «pechenek.net/telegram-sender.php». При выполнении скрипта получаю сообщение в телеграмм (я заранее в файл «mess.txt» внёс искомое значение). API telegram bot Сообщение отправлено

Для тех, кто не может отправить из-за блокировки телеграмма, пример обращения к API через прокси:

Не забудьте поменять CURLOPT_PROXY => ‘IP:PORT’ , укажите свой прокси  (HTTP/SOCKS) с потром.

Ну и напоследок готовый файл скрипта можете скачать тут: Скачать

На этом пожалуй всё, надеюсь статья была вам полезной. Не забывайте пользоваться кнопками «Поделиться в соц. сетях», так же подписываться на наш Канал и группы в ВК, Twitter, Facebook.

Всем удачи и море печенек!

Поделиться в соц. сетях:

Понравилась статья? Поблагодари автора, накорми печеньками! :)

CrazyKing

Печенько-кодер :Р

16 комментариев

  1. Скрипт почему то не работает. Ссылка с браузера исполняется, а вот с сервера нет.

    • Возможно не находит искомый текст в файле. Попробуйте указать полный путь. И что выдаёт если открыть PHP файл в браузере?

  2. Подскажите, пожалуйста, как использовать sendMediaGroup, т.е. отправку нескольких фото за раз?
    https://api.telegram.org/bot{-Variable.token-}/sendMediaGroup?chat_id={-Variable.user_id-}&media=[{«file_id»:»AgADAgADzagxGyoRaEljuWLsLhzZ3l4PnA4ABFDhLwVBZVGf6aUCAAEC», «file_id»:»AgADAgAD0KgxGyoRaEmAKpJyGvbCIYbBRg4ABDFgc0cwK4XkzkkAAgI»}]
    Делаю запрос вот так, не работает(((

    • /sendMediaGroup?chat_id=183444444&media=[{«type»:»photo»,»media»:»AgADAgADhKgxG1rCkEk-rX7O8T5quYoYnA4ABNCVsOXH1MjTSMQCAAEC»},{«type»:»photo»,»media»:»AgADAgADhKgxG1rCkEk-rX7O8T5quYoYnA4ABNCVsOXH1MjTSMQCAAEC»}]

  3. Здравствуйте, а как сделать чтобы с одного закрытого канала информация перекидывалась в другой, так сказать копировал и вставлял в другой чат

    • Добрый день. Теоретически, можно в переменную $mess подставлять нужный текст и рассылать на два чата.

    • Добавил код в статью выше, используя прокси можно отправить сообщения. Во всё виноват РКН….

  4. По ссылке отрабатывает и приходят сообщения. А вот пхп не хочет( вариант который в конце статьи только удалил код для прокси. Запускаю с локального сервера, при исполнении файла ничего не происходит(

  5. Никогда не работал с ПХП и тут решился всё же попробовать.
    Запустил, приходят заказы интернет магазина на почту и что самое главное, в Телеграм Бот!
    Спасибо за статью, всё очень круто!

  6. Здравствуйте, подскажите, а как быть с ошибкой:
    Warning: fopen(https://api.telegram.org/bot
    …failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in…
    На почту приходит, а в телеграм — нет.

  7. Добрый день! А можно как-то средствами PHP получить кол-во подписчиков канала?

  8. Как его модифицировать, чтобы отправлять сообщение на несколько ‘TELEGRAM_CHATID’ ?

Опиши свой кейс здесь, если у тебя остались вопросы и мы обязательно ответим...