Гость

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

  • Назад
  • Меню
  • Статьи
    • Все
    • Интернет и технологии
    • 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
  • 1871 просмотров
  • 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, чтобы сообщение в случае какого-либо сбоя не выбивало скрипт. В том случае, если вы отправляете несколько сообщений и из-за падения первого не доставляться и остальные.

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

Отзывы

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


Для того чтобы оставить комментарий, авторизуйтесь.
Понравился материал? Поделись!
CKEditor 4 + Загрузка картинок в Laravel
Ноя28
CKEditor 4 + Загрузка картинок в Laravel

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

  • Chebukin Pavel
  • 0
  • 28.11.2021 22:38
PHPStorm vs InteliJ Ultimate для разработки под Laravel и PHP
Июл23
PHPStorm vs InteliJ Ultimate для разработки под Laravel и PHP

Это сравнение двух известных IDE компании JetBrains. Возможно в чем-то зацеплю и краем WebStorm. Это мое личное мнение и оно может отличаться. Сразу уточню, цену на IDE сравниваю с текущей своей скидкой - 40%. С меньшей скидкой разница в стоимости между продуктами значительно растет. Уточняю так же что в InteliJ...

  • Chebukin Pavel
  • 0
  • 23.07.2022 12:47
Сайтмап для сайта на Laravel - sitemap.xml
Ноя25
Сайтмап для сайта на Laravel - sitemap.xml

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

  • Chebukin Pavel
  • 0
  • 25.11.2021 22:05
Редактирование кода страницы из админ панели с помощью редактора Ace9
Авг13
Редактирование кода страницы из админ панели с помощью редактора Ace9

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

  • Chebukin Pavel
  • 0
  • 13.08.2022 12:12
LaraDock или Homestead для разработки под Laravel?
Ноя25
LaraDock или Homestead для разработки под Laravel?

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

  • Chebukin Pavel
  • 0
  • 25.11.2021 20:28
Лучшие редакторы и среды разработки для разработчиков
Дек18
Лучшие редакторы и среды разработки для разработчиков

Выбор лучшего редактора и IDE Холивары между тем лучшим ли является для разработки Emacs или Vi(m) потихоньку отходят в прошлое. Уже сложно их представить полноценными средами разработки. Ведь несмотря на всю их практичность, соревноваться в удобстве с современными комбайнами они могут только при крайне длительной подготовке. Но чтобы выбрать лучший для себя...

  • Chebukin Pavel
  • 0
  • 18.12.2021 20:32

Copyright 2023 © All rights reserved.

Мы в: