Гость

Нажмите для авторизации/регистрации

  • Назад
  • Меню
  • Статьи
    • Все
    • Интернет и технологии
    • Laravel и WebDev
    • Linux, Windows, Docker, Etc
    • Новости
    • Прочее
    • Геймдев
    • Смотри как я умею
  • Информация
    • Оферта на дополнительные функции
    • Политика конфиденциальности
    • Тарифы
    • Пользовательское соглашение

Создаем канал в Telegram и отправляем в него сообщение через PHP/Laravel просто и легко

  1. Главная
  2. Статьи
  3. Laravel и WebDev
  4. Создаем канал в Telegram и отправляем в него сообщение через PHP/Laravel просто и легко
Создаем канал в Telegram и отправляем в него сообщение через PHP/Laravel просто и легко
  • 10/12/2021
  • Chebukin Pavel
  • 3700 просмотров
  • 0 комментариев

Создаем канал в Telegram и отправляем в него сообщение через PHP/Laravel просто и легко

Многие проекты используют нотификацию. Некоторые отправляют сообщения на почту, другие в Telegram, Slack и прочее. Сообщения - отличный вариант сообщить о новом заказе, комментарии, материале на сайте или происхождении какого-то события. Для многих вариантов используются библиотеки. Но вот для текстового сообщения в телеграм такое не нужно. Достаточно открыть прямую ссылку с нужными параметрами и сейчас я покажу как это сделать, начиная от создания самого канала и до отправки сообщения.

Создаем канал в который бот будет слать сообщение

Почему канал, а не напрямую человеку? Потому что вам не нужно будет переделывать алгоритм, если нотификации должно видеть несколько человек. Не понадобится лезть в код добавляя или удаляя участников. Вы все это сможете сделать в самом телеграмме будучи администратором.

Чтобы создать канал, идем в левое меню, со значком трех полосок и нажимаем "Создать канал"

Задаем название канала, выбираем тип "Публичный" и вводим ссылку по которой он будет доступен. Канал можно позже закрыть, но это самый простой вариант пригласить бота сразу.

Создаем бота

Идем на бота @BotFather, если он у вас не добавлен то в поиске так и вводите "@BotFather", после чего пишете ему сообщение:

/newbot

После этого бот вам должен ответить сообщением:

Alright, a new bot. How are we going to call it? Please choose a name for your bot.

На которое вы вводите название бота, в моем случае пусть будет MyLaravelClub. В ответ бот спросит техническое имя бота. Оно должно быть с приставкой bot в конце, а значит я просто отвечаю сообщением MyLaravelClubBot.

Если вы не попали на уже существующее имя, бот ответит вам сообщением:

Done! Congratulations on your new bot. You will find it at t.me/MyLaravelClubBot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.

Use this token to access the HTTP API:
nnnnnnnn:MMMMMMMMMM
Keep your token secure and store it safely, it can be used by anyone to control your bot.

For a description of the Bot API, see this page: https://core.telegram.org/bots/api</p>

В этом сообщении nnnnnnnn:MMMMMMMMMM это токен обращения к боту и он нам, как раз будет нужен. Переходим по указанной в сообщении ссылке, в моем случае это t.me/MyLaravelClubBot. В вашем случае будет имя вашего бота. Вместо отправки сообщения будет кнопка с надписью Запустить. Ее и нажимаем, запуская бота.

Приглашаем бота на канал и получаем идентификатор по которому будем писать от имени бота.

Переключаемся в телеграмме на наш канал, жмем на три точки в правом верхнем углу и жмем пункт "Добавить участников". После этого вводим имя нашего бота, это MyLaravelClubBot, в моем случае.

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

Следующий экран спрашивает какие права управления каналом стоит назначить боту. В нашем случае это не важно, оставляем как предложено по умолчанию.

Нажимаем Сохранить.

Самое время, если сообщение на канале от бота личные и никто не должен их видеть кроме тех кого вы сами пригласили на канал, то меняем тип канала в настройках(правый верхний угол - три точки). Меняем с Публичный на Частный и жмем кнопку Сохранить. Токен бота у нас есть, нужно теперь получить ID нашего канала. На нашем канале пишем сообщение от себя, любого содержимого, например "hello, world!".

Открываем браузер и переходим по ссылке https://api.telegram.org/bot<Bot_token>/getUpdates , в ней <Bot_token> заменяем нашим токеном бота, полученным от @BotFather, которое в сообщении я указал выше как nnnnnnnn:MMMMMMMMMM

"channel_post":{"message_id":6,"sender_chat":{"id":-1001111111111,"title":"MyLaravelClub","type":"channel"},"chat":{"id":-1001111111111,"title":"MyLaravelClub","type":"channel"},"date":1639177800,"text":"hello, world!"}}

В этом сообщении нас интересует "id":-1001111111111. Где число вместе со знаком и будет искомым идентификатором нашего канала. Теперь у нас есть все что нужно, а отправить сообщение можно прямой ссылкой вида:

https://api.telegram.org/bot<Bot_token>/sendMessage?chat_id=<id>&text=Привет%20мир

В ссылке меняем параметры на полученные нами, где вместо <Bot_token> подставляем наш токен бота, а вместо <id> - полученное числовое значение, id нашего чата. В нашем случае:

https://api.telegram.org/botnnnnnnnn:MMMMMMMMMM/sendMessage?chat_id=-1001111111111&text=Привет%20мир

После перехода по ссылке видим сообщение от бота в нашем канале:

Отправляем сообщение из PHP и/или Laravel

Теперь все просто, осталось лишь в нужном куске кода вызвать переход по ссылке. Сделать это просто следующим образом:

//ID канала куда отправляем
$idChannel = '-100111111111';
//токен бота которым отправляем сообщение
$botToken = 'nnnnnnnnn:MMMMMMMMMM';
//наше импровизированное сообщение
        $message = "Статистика заказов за сутки: "
            ."   \n\nВсего: заказов 99";
//кодируем его, чтобы сохранить переносы строк
        $message = urlencode($message);
//после этого отправляем
        try {
            file_get_contents("https://api.telegram.org/bot$botToken/sendMessage?chat_id=$idChannel&text=".$message);
        }
        catch (\Exception $e){

        }

Я специально обернул в конструкцию try - catch, чтобы сообщение в случае какого-либо сбоя не выбивало скрипт. В том случае, если вы отправляете несколько сообщений и из-за падения первого не доставляться и остальные.

Вот и вся отправка сообщений в телеграм канал ботом.

Отзывы

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


Для того чтобы оставить комментарий, авторизуйтесь.
Понравился материал? Поделись!
Редактирование кода страницы из админ панели с помощью редактора Ace9
Авг13
Редактирование кода страницы из админ панели с помощью редактора Ace9

Есть иногда задачи, такие как сделать код некоторых страниц редактируемым из админ панели. Вот и мне второй или третий раз за практику пришлось такое делать. Так как в админке никто левый не шариться и редактирование я делаю только конкретных страниц, а не всех, то больших методов ограничений доступа и анализа...

  • Chebukin Pavel
  • 0
  • 13.08.2022 12:12
Фотостоки и банки картинок с бесплатными тарифами
Ноя28
Фотостоки и банки картинок с бесплатными тарифами

Разрабатывая проект себе, или небольшому заказчику, сложно позволить себе значимые суммы денег в затратах. До выхода проекта в плюс, часто идет очень не мало временных и интеллектуальных, а так же финансовых затрат. Позволить себе оплату на таких сервисах как Envato Elements сложно. Хотя некоторое время я использовал их подписку и...

  • Chebukin Pavel
  • 0
  • 28.11.2021 21:27
Laravel, подключаем комментарии Disqus на сайт
Дек11
Laravel, подключаем комментарии Disqus на сайт

Ранее я уже писал о том, как добавить комментарии Facebook на сайт. В этом материале мы добавим альтернативные комментарии, от сервиса Disqus.  Комментарии на сайт встроенные лучше, чем подключаемые. Но требуют разработки, внедрения, модерации и т.д. Все это время и ресурсы. Но такие комментарии будут работать быстрее даже. Не всем...

  • Chebukin Pavel
  • 0
  • 11.12.2021 18:29
Проблема с просмотром больших XML/YML файлов?
Ноя28
Проблема с просмотром больших XML/YML файлов?

Вы, как и я, столкнулись со сложностью того, что сайт через API отдает большой XML файл? Хорошо когда есть документация, но часто ее нет, или она не полная, или вообще не актуальная. Нужно посмотреть что внутри файла. И вот тут сталкиваемся со сложностью, большая часть редакторов кода и текстовых редакторов...

  • Chebukin Pavel
  • 0
  • 28.11.2021 23:24
Laravel: CKEditor 4 + Сниппет кода
Ноя24
Laravel: CKEditor 4 + Сниппет кода

Символично на сайтах по ларавел начать наверное с какой-нибудь темы аля "сделать блог". Возможно в дальнейшем и я напишу такой материал. Но в этом я хочу показать как сделать интеграцию визуального редактора CKEditor со сниппетом кода. Саму установку CKEditor и интеграцию загрузки картинок опишу отдельным материалом. Здесь же, условимся что используется...

  • Chebukin Pavel
  • 0
  • 24.11.2021 21:24
CKEditor 4 + Загрузка картинок в Laravel
Ноя28
CKEditor 4 + Загрузка картинок в Laravel

В прошлом материале, я уже писал о подключении к CKEditor 4 плагина подсветки синтаксиса. Но так же писал что опишу загрузку картинок через визуальный редактор. Все делается достаточно просто. Вступление  Оговорюсь сразу, что не использую сторонние библиотеки для большего контроля над самим подключением и редактором, так и для того чтобы...

  • Chebukin Pavel
  • 0
  • 28.11.2021 22:38

Copyright 2023 © All rights reserved.

Мы в: