Перейти к содержанию

Telegram-бот

Жизнь — она как зебра. За черной полоской идет белая. За ней — снова черная, белая, черная, белая… и в самом конце, как водится, жопа. После небольшого напряженного периода на основной работе я вдруг обнаружил у себя нечто редкое и ценное: свободное время. Свободное время, когда можно не делать абсолютно ничего. А для меня это означает, что можно с удвоенной энергией заниматься любимым делом!

Я не стал отклыдывать в долгий ящик мою гениальную идею про триал, и решил сразу перейти к ее реализации, а точнее — к ее необходимой предпосылке: Telegram-боту.

Бот, которого мы заслужили #

Бот у проекта уже был. Появился он в самом начале — но использовался исключительно как API к Telegram: публиковал посты на канале и ни на что большее не претендовал. Этакий технический работник на минимальной ставке, которого заставляли делать одно и то же снова и снова.

Пришло время повысить его в должности.

Зачем боту новые полномочия #

Предыдущую неделю я посвятил автоматизации — написал bash-скрипты, которые покрыли все основные сценарии работы с пользователями и устройствами. CRUD в полном объеме, чистая история коммитов, никакой ручной возни с конфигами.

Но есть одна проблема: вбивать команды в черный экран терминала — удел администратора. А администратор — существо конечное в своих возможностях. Многое из того, что пользователи могут делать самостоятельно, сейчас требует моего участия: создать устройство, удалить его, получить конфигурацию для клиента. В далеких планах у меня — веб-панель с личным кабинетом. Но пока хватит Telegram-бота с ограниченным набором команд — это быстрое и практичное решение, которое может покрыть основные use-cases.

Архитектура #

Решение предельно простое. Бот — это middleware: принимает команды и запускает уже написанные скрипты из репозитория scripts в отдельном процессе. Никакой новой логики — только новый интерфейс поверх существующей автоматизации.

Идентификация пользователей — по Telegram ID. (Вот, кстати, зачем я добавил это поле в прошлый раз). В зависимости от роли в системе, возможности разные:

  • Незарегистрированный пользователь — подать заявку на подключение к сети или запросить триал-доступ.
  • Зарегистрированный пользователь — управление собственными устройствами: создать, удалить, получить конфигурацию.
  • Администратор — полный доступ: управление пользователями, статусами, состоянием сети и всем прочим.

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

Уже работает #

Минимальная реализация запущена. Бот доступен — можете начать пользоваться прямо сейчас.