Files

73 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# tg2max-relay
Ретранслятор отчётов **report-shot** в мессенджер **MAX** от имени **личного
аккаунта MAX** (без бизнес-бота). Работает в паре с
[ReportEvryDay](https://gittea.khad1997pav.ru/khadzhibekovpa/ReportEvryDay)
и **не изменяет** его: просто читает тот же docker-volume с PDF-отчётами и
хвост лога (для предупреждений о сбоях).
## Как это работает
```
report-shot (тот же сервер) tg2max-relay
writes /app/output/*.pdf ─volume─▶ видит новый otchet_YYYY-MM-DD.pdf
writes report_shot.log шлёт файл+подпись в MAX (vkmax,
личный аккаунт, wss ws-api.oneme.ru)
строки ALERT_RE из лога → текстом
```
- `vkmax` (unofficial user-client MAX, GitHub main) — `send_message` / `send_file`.
- Сессия MAX (`device_id` + `login_token`) получается один раз **на своём ПК**
и переносится в переменные Coolify. На сервере ничего интерактивного не нужно.
## 1. Активация MAX-сессии (один раз, на Windows-ПК)
```powershell
cd C:\scripts\tg2max-relay
py -m venv .venv
.\.venv\Scripts\activate
pip install -r requirements.txt
python -m app.login --phone +7999XXXXXXX
# введите код из приложения/SMS MAX → сохранится max_session.json
python -m app.login --chats # посмотреть chatId (для MAX_TARGET_CHAT)
python -m app.login --test <chatId> # проверить отправку
```
Для «Избранного» в качестве `MAX_TARGET_CHAT` используется собственный user id
(скрипт подскажет его).
## 2. Deploy в Coolify (рядом с report-shot)
Создано как приложение в том же проекте **Report** (build pack
dockercompose). Переменные в **Variables**:
| Переменная | Значение |
|---|---|
| MAX_DEVICE_ID | из шага 1 |
| MAX_LOGIN_TOKEN | из шага 1 |
| MAX_TARGET_CHAT | chatId (Избранное: свой user id) |
| TZ | Europe/Moscow |
compose монтирует volume отчётов **read-only** bind-путью хоста
(`/var/lib/docker/volumes/<uuid-report-shot>_report-shot-output/_data` → `/watch`).
Если report-shot пересоздан с новым uuid — поправьте путь (или задайте
`REPORT_VOLUME_PATH` переменной) и сделайте redeploy.
## 3. Поведение
- При первом запуске текущее содержимое volume помечается как отправленное
(история не дублируется), шлётся только «🟢 на связи».
- Каждый новый `otchet_*.pdf` (файл дописался и молчит ≥ poll_interval) →
`send_file` с подписью «данные за <вчера>».
- Строки `report_shot.log`, попадающие под `ALERT_RE`
(сбои, неполный отчёт) → текстом в тот же чат.
- Захлебнулся WS/MAX — ретраи 2× и переподключение в следующем цикле; сбой
цикла не роняет контейнер.
Без `MAX_DEVICE_ID/MAX_LOGIN_TOKEN/MAX_TARGET_CHAT` контейнер живёт, но
сообщает в логе, что вход невозможен.
## Переменные
См. `.env.example`. Всё опционально, кроме трёх MAX-ключей.