50 lines
2.1 KiB
Markdown
50 lines
2.1 KiB
Markdown
# telemt-bot
|
|
|
|
Лёгкий Telegram-бот для админ-доступа к Telemt Control API.
|
|
|
|
## Что умеет
|
|
|
|
- `/health` -> `GET /v1/health`
|
|
- `/summary` -> `GET /v1/stats/summary`
|
|
- `/users` -> `GET /v1/stats/users` (первые 20 строк)
|
|
|
|
Команды обрабатываются только от одного админ-чата (`TELEGRAM_ADMIN_CHAT_ID`).
|
|
|
|
## Переменные окружения
|
|
|
|
- `TELEGRAM_BOT_TOKEN` - токен Telegram-бота.
|
|
- `TELEGRAM_ADMIN_CHAT_ID` - chat id администратора, которому разрешены команды.
|
|
- `TELEMT_API_BASE_URL` - базовый URL API, например `http://host.docker.internal:9091`.
|
|
- `TELEMT_API_AUTH_HEADER` - значение заголовка `Authorization` для Telemt API (если включён `auth_header`).
|
|
- `TELEGRAM_HTTP_TIMEOUT_SECONDS` - timeout запросов к Telegram (по умолчанию `60`).
|
|
- `TELEMT_HTTP_TIMEOUT_SECONDS` - timeout запросов к Telemt API (по умолчанию `5`).
|
|
|
|
## Быстрый старт (PowerShell)
|
|
|
|
```powershell
|
|
Copy-Item .env.example .env
|
|
# отредактируй .env
|
|
docker compose up --build -d
|
|
docker compose logs -f
|
|
```
|
|
|
|
## Почему решение экономное по ресурсам
|
|
|
|
- Go-бинарник без рантайма и с нулевым CGO.
|
|
- Long polling (`getUpdates`) вместо частых коротких запросов.
|
|
- Один переиспользуемый `http.Client` и keep-alive соединения.
|
|
- Multi-stage сборка и минимальный образ `distroless`.
|
|
|
|
## CI/CD для Gitea Registry
|
|
|
|
Добавлен workflow: `.gitea/workflows/docker-publish.yml`.
|
|
|
|
Что делает:
|
|
- при `push` в `main`, `master`, `v*` и при `git tag v*`;
|
|
- собирает образ из `Dockerfile`;
|
|
- пушит в registry `git.shts.su/${REPO}`;
|
|
- выставляет теги: `latest`, `<branch-or-tag>`, `sha-<12-symbols>`.
|
|
|
|
Нужно создать secret в Gitea репозитории:
|
|
- `ACTIONS_PAT` - токен с правами на push в package/container registry.
|