Telegram-бот
Содержание
Жизнь — она как зебра. За черной полоской идет белая. За ней — снова черная, белая, черная, белая… и в самом конце, как водится, жопа. После небольшого напряженного периода на основной работе я вдруг обнаружил у себя нечто редкое и ценное: свободное время. Свободное время, когда можно не делать абсолютно ничего. А для меня это означает, что можно с удвоенной энергией заниматься любимым делом!
Я не стал отклыдывать в долгий ящик мою гениальную идею про триал, и решил сразу перейти к ее реализации, а точнее — к ее необходимой предпосылке: Telegram-боту.
Бот, которого мы заслужили #
Бот у проекта уже был. Появился он в самом начале — но использовался исключительно как API к Telegram: публиковал посты на канале и ни на что большее не претендовал. Этакий технический работник на минимальной ставке, которого заставляли делать одно и то же снова и снова.
Пришло время повысить его в должности.
Зачем боту новые полномочия #
Предыдущую неделю я посвятил автоматизации — написал bash-скрипты, которые покрыли все основные сценарии работы с пользователями и устройствами. CRUD в полном объеме, чистая история коммитов, никакой ручной возни с конфигами.
Но есть одна проблема: вбивать команды в черный экран терминала — удел администратора. А администратор — существо конечное в своих возможностях. Многое из того, что пользователи могут делать самостоятельно, сейчас требует моего участия: создать устройство, удалить его, получить конфигурацию для клиента. В далеких планах у меня — веб-панель с личным кабинетом. Но пока хватит Telegram-бота с ограниченным набором команд — это быстрое и практичное решение, которое может покрыть основные use-cases.
Архитектура #
Решение предельно простое. Бот — это middleware: принимает команды и запускает уже написанные скрипты из репозитория scripts в отдельном процессе. Никакой новой логики — только новый интерфейс поверх существующей автоматизации.
Идентификация пользователей — по Telegram ID. (Вот, кстати, зачем я добавил это поле в прошлый раз). В зависимости от роли в системе, возможности разные:
- Незарегистрированный пользователь — подать заявку на подключение к сети или запросить триал-доступ.
- Зарегистрированный пользователь — управление собственными устройствами: создать, удалить, получить конфигурацию.
- Администратор — полный доступ: управление пользователями, статусами, состоянием сети и всем прочим.
Механику триал-доступа я решил отложить на следующий этап — слишком много деталей, которые хочется продумать как следует, а не на бегу. Но архитектура уже готова, и триал органично впишется в нее, когда придет время.
Уже работает #
Минимальная реализация запущена. Бот доступен — можете начать пользоваться прямо сейчас.