SuperBotGo - мультиканальная бот-платформа с поддержкой WebAssembly-плагинов и встроенной админки.
Проект объединяет мессенджеры, плагины, авторизацию, хранение данных и администрирование в одном приложении. Плагины запускаются изолированно и взаимодействуют с платформой через Host API.
- поддержка Telegram, Discord, VK и Mattermost
- устанавливать и обновлять WASM-плагины через админку
- запускать плагины по командам, HTTP-запросам, расписанию и событиям
- управлять правами плагинов и доступом пользователей
- хранить состояние диалогов, файлы, настройки и данные плагинов
- Go 1.25+
- Docker Compose
- Node.js 20+, если нужно собирать Admin UI
docker compose up -dcp config.example.yaml config.yamlПо умолчанию токены мессенджеров пустые. Канал включается только после добавления соответствующего токена в config.yaml или через переменные окружения.
Пример:
BOT_TELEGRAM_TOKEN=123:ABC
BOT_DISCORD_TOKEN=...
BOT_VK_TOKEN=...
BOT_MATTERMOST_TOKEN=...| Путь | Назначение |
|---|---|
cmd/bot |
Точка входа основного приложения |
internal/channel |
Адаптеры мессенджеров и маршрутизация сообщений |
internal/plugin |
Жизненный цикл нативных и WASM-плагинов |
internal/wasm |
WASM runtime, loader, registry и event bus |
internal/trigger |
Обработка Messenger, HTTP, Cron и Event-триггеров |
internal/authz |
Авторизация, политики доступа и интеграция со SpiceDB |
internal/notification |
Уведомления и выбор канала доставки |
github.com/SuperBotForge/sdk/go-sdk |
Внешний Go SDK для WASM-плагинов |
plugins |
Примеры плагинов |
web/admin |
Встроенная React-админка |
migrations |
PostgreSQL-миграции |
deployments |
Deployment-файлы |
Подробная архитектура описана в документации.
Плагин SuperBotGo - это один .wasm файл, который описывает метаданные, требования к ресурсам и набор триггеров.
Установка Go SDK:
go get github.com/SuperBotForge/sdk/go-sdk@latestМинимальная сборка WASM-плагина:
GOOS=wasip1 GOARCH=wasm go build -o plugin.wasm .Оптимизированная сборка:
GOOS=wasip1 GOARCH=wasm go build -ldflags="-s -w" -o plugin.wasm .Пример плагина: plugins/wasm-schedule.
Подробный quick start: https://superbotforge.github.io/docs/guide/quick-start.html.
Основной файл конфигурации:
config.yamlПример конфигурации:
config.example.yamlВсе параметры можно переопределять через переменные окружения с префиксом BOT_.
Примеры:
BOT_DATABASE_HOST=localhost
BOT_DATABASE_DBNAME=superbot
BOT_REDIS_ADDR=localhost:6379
BOT_ADMIN_API__KEY=super-secret-admin-key
BOT_USER__AUTH_SESSION__SECRET=super-secret-session-keyПравило именования:
- переход между секциями превращается в один
_ - символ
_внутри имени ключа превращается в двойной__
Например, user_auth.session_secret становится BOT_USER__AUTH_SESSION__SECRET.
Подробно: https://superbotforge.github.io/docs/deploy/configuration.html.
Встроенная админка доступна по адресу:
http://localhost:8080/admin
Через неё можно:
- загружать, устанавливать, обновлять и отключать WASM-плагины
- управлять требованиями и разрешениями плагинов
- управлять пользователями
- настраивать правила доступа
- запускать импорт и синхронизацию университетских данных
Основная документация доступна на сайте:
https://superbotforge.github.io/docs/
Запуск тестов:
go test ./...Сборка приложения:
go build -o bot ./cmd/botСборка Admin UI:
cd web/admin
npm ci
npm run buildРекомендуемый путь — запуск workflow Release из GitHub Actions.
Testing-релиз собирает и публикует образ:
gh workflow run release.yml \
--repo SuperBotForge/SuperBotCore \
-f environment=testing \
-f version=1.3.2Образ получает теги:
X.Y.ZvX.Y.Zlatest
Flux на testing-стенде отслеживает vX.Y.Z и автоматически обновляет overlay.
Production-релиз продвигает уже опубликованный testing-образ в отдельный тег prod-vX.Y.Z:
gh workflow run release.yml \
--repo SuperBotForge/SuperBotCore \
-f environment=prod \
-f version=1.3.2Flux на production-стенде отслеживает только prod-vX.Y.Z, поэтому обычные testing-релизы не затрагивают prod. Для GitHub Environment prod стоит включить required reviewers.
Старый tag-based путь остаётся рабочим для testing-релиза:
git tag v0.1.0
git push origin v0.1.0После публикации тега запускается workflow Build & Push: он собирает Admin UI, проверяет Go-код, запускает тесты и публикует Docker-образ.
Go SDK и протокол плагинов вынесены в отдельный репозиторий:
https://github.com/SuperBotForge/sdk
Релизы Go SDK создаются через workflow Release Go SDK в этом репозитории:
gh workflow run release-go-sdk.yml \
--repo SuperBotForge/sdk \
-f version=0.4.0 \
-f prerelease=falseРелизы протокола создаются тегами вида protocol/v4.0.0.
Локальная инфраструктура описана в docker-compose.yml.
Образ приложения собирается через Dockerfile:
docker build -t superbotgo .Проект распространяется по лицензии MIT.