Чуть больше года назад я столкнулся с разработкой телеграм-ботов. Будучи профессиональным программистом быстро разобрался и свет увидел мой первый бот - Доктор Знаев. Статью про него выкладывал на vc.ru . Затем от него отпочковался Алкобот Знаева с забавным функционалом - вы ему название лекарства, а он вам скажет через сколько после приёма можно выпивать

Боты это хорошо!

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

Итак, вот мои основные претензии к телеграму (сорян, Паша) :

  • Бардак. Написать чистый и красивый бот нетривиальная задача, всё-таки это чат формат, бесконечная портянка сообщений напрягает.

  • Некрасиво. Опять же, чат... для быстрого усвоения инфы подходит, но функциональное приложение создать сложно.

  • Распространение. Несмотря на то, что в телеге сотни миллионов пользователей, вывести своего бота за его пределы непросто. Ссылки телеграм открывает внутри себя, что сразу повышает порог переходов. В Whatsapp на этот счёт все ровно, ссыль открывается в броузере, где у пользователя уже все пароли и явки.

  • Телега есть не у всех. Не смотря на пенитрацию на Российском рынке в больше чем 50% телеграм стоит не у всех. Люди старшего возраста им довольно часто не пользуются. Эту аудиторию терять тоже не хочется. Веб версия телеграм ботов всё-таки требует регистрации.

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

По сути, Meshapp это low code инструмент для создания микро приложений, как и в телеграме, только без надоедливого формата чата и без 700 миллионов пользователей.

Что использовал

Итак, самое интересное, посмотреть, что под капотом. Для разработки фронтенда я использовал reactjs (ну, а что же еще?). Система ждёт от приложения объект в JSON формате, где описывается, как должна выглядеть страница. Список компонентов выглядит примерно так :

{
    name: 'start',
    components: [
      {
        type: 'Typography',
        as: 'h1',
        variant: 'centred',
        children: 'Hello World!',
      },
      {
        type: 'Button',
        variant: 'primary',
        action: 'goto:components',
        text: `Список компонентов`,
      },
    ]
  };
  res.send(response);
}

На клиенте всё это дело парсится, находятся нужные компоненты и красота выводится в тело документа.

По сути у автора бота есть только одна опция, а именно - прослушивание экшнов, которые приходят от клиента. Любой активный компонент (кнопка, карточка, поисковое поле) умеет делать только POST вызов на сервер по пути /action, в теле же запроса компонент передаёт команду определённую автором при создании вью. Как в примере, команда при нажатии на кнопку несет в себе следующее :

{ command: 'goto:components' }

Здесь я зарезервировал для себя тип команды goto за которым следует имя вью, которое я хочу отобразить в ответ на нажатие кнопки. Наверно при разрастании бота такая простота превратится в ад для разработчика, но я сознательно выбрал этот путь, что бы придерживаться метода KISS (Keep It As Siple And Stupid). Ведь мы хотим писать бизнес логику, а не поднимать 100500 фреймворков, правда? Собственно, тот же принцип у телеграм ботов, они тоже обрабатывают только два вида обратной связи.

Как и что храним?

Для регистра ботов я использовал поисковый сервис Algolia, так можно осуществлять fuzzy поиск, ошибаться в написании, и всё равно находить релевантный контент. Индексация происходит по имени и описанию бота.

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

Собственно большего система не хранит за ненадобностью. Обработка любых других данных остаётся на совести разработчика бота.

That is all folks

Собственно это, наверно, всё. На всякий случай приложу ссылку на немножко кода, так, на всякий случай, вдруг кому интересно.

Комментарии (4)


  1. maxp
    19.11.2022 13:44
    +4

    Честно говоря вообще не понял как соотносятся боты на платформе Телеграм и то, что предлагается здесь. Возможно я не очень понял, даже посмотрев код примера, что именно здесь предлагается.
    Поясните?


    1. antonoldenberg Автор
      19.11.2022 15:32

      Валидный комментарий, как и все комментарии в этом духе, использование доброго имени ботов тут наверно не совсем уместно. Это скорей low code инструмент для создания небольших веб приложений, построенных по принципу свободного выбора стека для бэкенда.


  1. Vvlad1973
    19.11.2022 15:32
    +1

    Боты Телеграмма хороши тем, что дают доступ к тем, кто уже есть в "телеге". А таких немало, и каждый день перевес, по сравнению с тем же WhatsApp, меняется.

    Это штуки, которые не требуют от пользователя ни регистрации (нажать Старт при запуске - не в счёт), ни запоминания линка, ни установки приложений.

    Не удобно - да, если рассматривать чат просто как ленту. Но, подключая механику editMessage можно делать вполне юзабельные вещи. Webapp - уже сильно иная песня, и бот теперь, в этом контексте, - полноценное приложение.

    А вот с Вашим продуктом не понятно. В чем его уникальность, и какой такой killer feature планируется конкурировать с телеграммовыми ботами?


    1. antonoldenberg Автор
      19.11.2022 15:35

      Ответ тут такой же как и на предыдущий комментарий, думаю я не совсем верно провёл аналогию, от телеграм ботов тут только простота коммуникации, есть одна точка входа и готовый фронт, стэк бэкенда остаётся за разработчиком. по сути это low code инструмент для создания интерактивных приложений