Студия разработки сайтов и приложений

Netspark.ru

Платформа для ботов в Telegram

Ботопотамы

Ботопотамы — свирепые телеграм-боты

Спешу сообщить вам, дорогие друзья, что на днях я выпустил в интернет свирепых Ботопотамов. Рассказываю, как так вышло.

Как-то зимой я баловался телеграм-ботами и решил написать один, который бы для меня мониторил сайты, писал мне в телегу если что, а также принимал произвольные сообщения и перенаправлял в чатик. Похожиие функции у меня когда-то были в слаке, но со слаком случилось известно что и всё прикрыть. Захотел сделать аналог в телеграме. В общем, в свободное время стал писать бота с админкой и заодно обнаружил, что если писать админку правильно, то она сгодится как для одного бота, так и для множества разных ботов. И писать сразу стало интереснее.

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

А чат с ботом в телеграме выглядит как другие чаты с ботами в телеграме.

Первого бота зовут Botopotamus Monitor Bot и он умеет следующие вещи:

  • мониторит заданный список сайтов (посредством обращения по указанному адресу);
  • отправляет сообщение в телеграм, если сайт вернул ошибку, завис, или недоступен;
  • сохраняет пинг, с которым загрузился сайт;
  • ведет небольшую статистику аптайма, строит графики за последнюю неделю, хранит измерения за 30 дней;
  • выводит графики в личном кабинете на сайте, а небольшое summary по аптайму — прямо в чат;
  • генерирует (в чате или на сайте) ключик авторизации для отправки уведомлений;
  • принимает запросы, авторизованные этим ключиком, и отправляет сообщения из этих запросов в чат. То есть позволяет отправлять из других программ уведомления в телеграм о чем угодно.

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

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

Чтобы начать пользоваться ботопотамами, нужно зарегистрироваться на сайте и в профиле указать никнейм или id в телеграме. Регистрацию через ТГ еще не прикрутил, но сделаю, без неё немного странно.

В ближайшем будущем предполагаю для платформы несколько направлений развития:

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

Примерно так. Заходите в гости к Ботопотамам, если интересно, задавайте вопросы, постараюсь ответить.

Про техническую часть пишу в конце отдельно, чтобы не пугать людей говорением на языках. Бэкэнд сервиса сделан на Laravel с панелькой Orchid. Фрондэнд без изысков: bootstrap 5 + blade, поскольку основные функции доставляются через ботов. Сами боты работают в режиме вебхуков, но есть и поддержка лонг-поллинга (с ним отлаживать удобнее).

Посидели с чатом жопотэ, смастерили скрипт под docker compose, чтобы разворачивать быстро и чтоб всё на контейнерах. Не сказать что вышел шедевр, но думаю может выложить сборку с комментариями, вдруг кому пригодится? Скажем, как пособие, в котором разворачивается:

  • nginx + php + mysql — чтобы приложение работало;
  • redis — для кэшей и очередей;
  • supervisor — чтобы очереди всегда обрабатывались;
  • certbot — для https;
  • cron для крона;
  • logrotate чтобы автоматически пересохранять логи за несколько дней;
  • postfix с opendkim — чтобы отправлять письма с восстановлением пароля и они долетали до адресатов.

Незамысловато, но зато всё работает. Хочу добавить horizon, loki, возможно прометея с графаной по классике, и еще пару вещей.

Обсуждение

Чтобы обсудить заметку, написать комментарий, или просто связаться, заходите в Телеграм-канал. У нас весело и всем рады!

Также меня можно найти в Хвиттере, VC.ru, Дзене, или Тенчате.