Найти тему
Назаров Live

Telegram бот для сайта на MODX+AjaxFormit

Оглавление

Пришел заказ:

Нужно написать телеграм бот для формы заявок. Сайт с CMS MODX Revo.

Если вы нашли эту систему, то скорее всего вы знаете что такое бот и что такое сайты на MODX поэтому пропустим ликбез о ботах и сайтах и приступим к работе.

Получение ключей бота в BotFather

Я писал об этом ранее в этой статье там описан алгоритм создания бота в BotFather. Поэтому буду считать что у вас все ключи есть и вызнаете что с ними делать. Перейдем в панель управления MODX и начнем писать код для нашего бота на PHP.

Создаем сниппет в MODX

Создаем сниппет в MODX который будет содержать код нашего телеграм бота.

Рекомендую не копировать весь код целиком, а все таки нужно понять принцип и стараться писать его самому.

И так, я создал сниппет с именем to_telegram:

-2

Выше приведена функция message_to_telegram() на языке программирования PHP. В данной функции использована одна переменная $text она передает текст который будет приходить клиенту в телеграмм бот.

Важные строки кода:
Строка #2 - сюда мы вставляем ключ который получили в BotFather: 7359******:xxxxxxxxx
Строка #6 сюда мы вставляем id пользователей через запятую если их несколько, либо один id. ID пользователя можно получить по номеру телефона с помощью этого бота

И теперь вторая часть кода:

-3

Переменная $text - здесь у нас заголовок сообщения и второй строкой идет само сообщение которое мы получаем из поля input name="message"

Редактируем вывод формы в MODX

Переходим на страницу или в шаблон в то место где размещена наша форма

Форма работает на компоненте AjaxFormit
Форма работает на компоненте AjaxFormit

Если ваша форма использует компонент AjaxFormit, то вам нужно просто в параметре &hooks добавить имя вашего сниппета с кодом бота в моем случае это to_telegram.

Добавляем, сохраняем и проверяем

Важно: в параметре hooks сниппет to_telegram должен размещаться после email, иначе могут быть ошибки.
Еще одна важность: пользователь который буде получать заявки в телеграм бот должен зайти в бота и нажать кнопку старт, иначе сообщения с сайта не будут приходить.

На этом все! Спасибо тем кто дочитал)