Связываем форму сайта с Telegram-ботом на чистом JavaScript за 15 минут: Полная разработка и деплой

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

Друзья, приветствую!

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

Суть задачи:

Пользователь вводит данные в форму на сайте, после чего эта информация отправляется заказчику через Telegram-бота. Данные отправляются в формате HTML, с полным набором информации. Всё это нужно было реализовать на чистом JavaScript + HTML + CSS. Из этой задачи родилась идея для данной статьи.

Чем мы займёмся?

Мы зарегистрируем Telegram-бота через BotFather, создадим приятную страницу с формой для сбора данных с использованием бесплатного сервиса WebSim.ai, а затем настроим отправку сообщений с формы в Telegram-бота, используя только JavaScript, HTML и CSS.

После завершения проекта, я покажу, как запустить его удалённо, чтобы каждый мог воспользоваться нашей формой. Для этого мы будем использовать хостинг Amvera Cloud, потому что это быстро и удобно.

Кратко о процессе деплоя

Процесс деплоя сводится к следующему:

  1. Подготовить файлы страницы.

  2. Создать файл инструкций (его я предоставлю).

  3. Доставить файлы на Amvera через GIT или встроенный интерфейс.

После простых манипуляций наш сайт станет доступен по бесплатному HTTPS-домену, который предоставит Amvera.

Подготовка Telegram для приёма сообщений

На этом этапе мы создадим Telegram-бота, получим свой Telegram ID, чтобы бот знал, кому отправлять сообщения, и позволим боту отправлять нам сообщения, «познакомившись» с ним.

Шаги для создания Telegram-бота:

  1. Перейдите в BotFather.

  2. Введите команду /newbot (или выберите её в меню).

  3. Придумайте имя бота — любое, на любом языке.

  4. Присвойте уникальный username на английском, оканчивающийся на "bot", "BOT" или "Bot" (без пробелов).

  5. Сохраните токен, который выдаст BotFather.

Для того чтоб позволить боту отправлять вам сообщения, перейдите в чат с ботом и нажмите кнопку «СТАРТ».

Получение Telegram ID:

Чтобы бот мог отправлять вам сообщения, нужно получить ваш Telegram ID. Один из способов — воспользоваться ботом IDBot Finder Pro:

  1. Перейдите в бота.

  2. Нажмите «Старт».

  3. Выберите «My info».

  4. Кликните на свой ID, и он скопируется в буфер обмена.

Подготовка страницы с формой

Страницу можно сделать самостоятельно или с помощью сервиса WebSim.ai, который сгенерирует нужную форму. Я воспользуюсь WebSim.ai.

Подробно про данный сервис я писал в этой статье: «WebSim AI: Бесплатный ИИ-помощник для быстрой веб-разработки – время фронтендерам напрячься».

Хочу чтоб в моей форме были следующие поля:

  • Имя (обязательно)

  • Фамилия (обязательно)

  • Дата рождения (обязательно)

  • Пол (чекбоксы, обязательно)

  • Хобби (выпадающий список, обязательно минимум одно)

  • Примечание (необязательно)

После отправки формы пользователь увидит сообщение: «Ваша анкета отправлена».

Задача для нейросети WebSim

Скрытый текст

Необходимо создать страницу с формой, которая будет содержать следующие поля:

  • Имя (input type="text")

    • Поле обязательно для заполнения.

  • Фамилия (input type="text")

    • Поле обязательно для заполнения.

  • Дата рождения (input type="date")

    • Обязательное поле для выбора даты через календарь.

  • Пол (input type="checkbox")

    • Чекбоксы для выбора пола. Обязательно должно быть выбрано одно значение.

    • Примеры значений: мужской, женский.

  • Хобби (select multiple)

    • Выпадающий список с возможностью выбора нескольких значений.

    • Обязательно должно быть выбрано как минимум одно хобби.

    • Пример хобби: чтение, спорт, музыка, путешествия.

  • Примечание (textarea)

    • Поле для ввода произвольного текста. Заполнение не обязательно.

Под формой необходимо разместить кнопку «Отправить».

После успешной отправки формы, отобразить всплывающее сообщение (popup) с текстом:
«Ваша анкета отправлена».

Требования:

  • Форма должна быть валидирована перед отправкой (проверка обязательных полей).

  • Для реализации можно использовать HTML5 и JavaScript.

Можно писать и проще, но я за то чтоб моя задача была максимально понятна.

Перейдем на сайт WebSim, выполним авторизацию и в поле ввода запроса вставим наш промт.

Посмотрим на результат

 Неплохо, но я знаю что он может лучше.
Неплохо, но я знаю что он может лучше.

Попросим добавить больше стилей. Кроме того, пусть он подправит нам блок с хобби, добавив возможность отмечать чекбоксами и работать в формате выпадающего списка.

Новая задача для нейросети WebSim

Скрытый текст

Добавить стилизацию формы и её элементов:

  • Придать форме более современный вид с использованием CSS (flexbox/grid для организации элементов).

  • Все обязательные поля должны иметь специальную визуальную индикацию (например, красную звёздочку рядом с меткой поля).

  • Стилизация кнопки «Отправить» — сделать её заметной, с эффектом при наведении.

  • Добавить отступы, границы, и тени для полей ввода, чтобы они выглядели аккуратно и легко читались.

  • Всплывающее сообщение «Ваша анкета отправлена» стилизовать как модальное окно с затемнением фона.

Изменить блок с хобби:

  • Реализовать выпадающий список с возможностью выбора нескольких опций, где каждое хобби отмечается через чекбоксы.

  • Для этого добавить кастомный dropdown (например, с использованием select + checkbox для выбора нескольких вариантов).

  • В выпадающем списке пользователь должен видеть доступные варианты хобби и иметь возможность отмечать одно или несколько.

  • Добавить проверку, что как минимум одно хобби выбрано.

Примерные стили:

  • Сделать выпадающий список с хобби похожим на мультивыборные списки с чекбоксами внутри, который открывается при нажатии (можно использовать популярные решения с JavaScript для кастомного мультиселекта).

Валидация формы:

  • Проверить обязательность заполнения всех полей перед отправкой.

  • Подсветить ошибку, если какое-либо обязательное поле не заполнено или не выбрано.

Итоговое требование:

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

Смотрим на результат

 Есть ещё над чем работать, но для текущего формата статьи подойдет.
Есть ещё над чем работать, но для текущего формата статьи подойдет.

Теперь нам остается привязать отправку этой формы в наше телеграмм. Попросим об этом сервис, так как WebSim прекрасно работает с JavaScript. После, при необходимости, подправим JS под себя.

Я бы хотел, чтоб сообщение в бота отправлялось с HTML форматированием, поэтому, задачу поставим так:

Скрытый текст

Отправка данных через чистый JavaScript

После того как форма будет валидирована и отправлена, данные должны отправляться на указанный Telegram-бот (ID бота: 7840688347:AAFsSq0EAцуU42lEnXFueфR8RtVtTа37N9BQ).

Сообщение должно отправляться пользователю с ID: 5120841744.

Формат сообщения:

Сообщение должно быть в формате ParseMode HTML.
Начало сообщения: «

Источник: https://habr.com/ru/companies/amvera/articles/847346/


Интересные статьи

Интересные статьи

Заместитель генерального директора «Газпром‑Медиа Холдинга» Сергей Косинский сообщил о запуске единой подписки для цифровых активов холдинга. Пользователи получат доступ ко всему платному ко...
Рано или поздно, каждый пэхапешник, пишущий на битриксе, начинает задумываться о том, как бы его улучшить, чтобы и всякие стандарты можно было соблюдать, и современные инструменты разработки использов...
Если вводить категоричные суждения, то только с эпохи Возрождения взгляд западной Европы на человеческое естество стал отгораживаться от своих «тёмных» произволов и попущений. Так как гра...
В этой статье мы расскажем, как оптимизировать крупный проект в «Битрикс24» и увеличить его производительность в 3 раза, изменяя настройки MySQL и режим питания CPU. Дано Корпоративн...
Если у вас есть интернет-магазин и вы принимаете платежи через Интернет, то с 01 июля 2017 года у вас есть онлайн-касса.