Add stale-donor alerting with per-route recipients and delivery fallback
New STALE_DONOR_ALERT_DAYS (.env, global threshold, 0=off) + per-route stale_alert_enabled/stale_alert_ids (routes.json). Checked once per route per cycle against MAX(posted_at) in the DB - self-resetting via a single route_alerts.stale_alert_sent_at timestamp compared against the last post time, so it fires once per quiet spell and re-arms automatically once the donor posts again, no separate ack/clear step needed. If a configured stale_alert_ids recipient can't be reached (never started a chat with the bot), the global TG_ADMIN_IDS get a separate notice about that delivery failure instead of the alert silently vanishing.
This commit is contained in:
@@ -77,7 +77,9 @@ ssh -i ~/.ssh/id_ed25519_proxmox root@192.168.1.222 'pct exec 107 -- docker logs
|
||||
"tg_chat_id": "-1001303630155",
|
||||
"tg_enabled": true,
|
||||
"max_chat_id": "123456",
|
||||
"max_enabled": true
|
||||
"max_enabled": true,
|
||||
"stale_alert_enabled": true,
|
||||
"stale_alert_ids": [123456789]
|
||||
}
|
||||
```
|
||||
|
||||
@@ -88,9 +90,19 @@ ssh -i ~/.ssh/id_ed25519_proxmox root@192.168.1.222 'pct exec 107 -- docker logs
|
||||
| `vk_source` | Группа-донор ВК: screen name, URL или owner_id |
|
||||
| `tg_chat_id` / `max_chat_id` | Куда публиковать (chat/channel ID) |
|
||||
| `tg_enabled` / `max_enabled` | Переключатель — публиковать ли в эту платформу для этого маршрута (только TG, только МАКС, или оба) |
|
||||
| `stale_alert_enabled` | Оповещать ли, если донор давно не постил (см. ниже). По умолчанию `false` |
|
||||
| `stale_alert_ids` | Кому слать оповещение о простое (список TG ID). Пусто/не указано → шлётся `TG_ADMIN_IDS` |
|
||||
|
||||
Можно завести несколько маршрутов с разными `vk_source`, каждый — в свои TG/МАКС чаты. Токены ботов (`TG_BOT_TOKEN`, `MAX_BOT_TOKEN`, `VK_ACCESS_TOKEN`) общие на все маршруты — один бот пишет в разные чаты.
|
||||
|
||||
### Оповещение о "молчащем" доноре
|
||||
|
||||
Глобальный порог — `STALE_DONOR_ALERT_DAYS` в `.env` (0 = функция выключена целиком). Если у конкретного маршрута `stale_alert_enabled: true` и донор не постил дольше порога — уходит одно сообщение получателям из `stale_alert_ids` (или `TG_ADMIN_IDS`, если список пуст). Не спамит: пока донор молчит, повторно не напоминает; как только появляется новый пост — оповещение автоматически "перевзводится" для следующего простоя. Если бот не может достучаться до кого-то из `stale_alert_ids` (человек ни разу не писал боту) — отдельным сообщением получают `TG_ADMIN_IDS`.
|
||||
|
||||
### Узнать свой Telegram ID
|
||||
|
||||
Написать боту `/id` в личку — ответит вашим ID в копируемом виде (`<code>...</code>`), чтобы вставить в `TG_ADMIN_IDS` или `stale_alert_ids`.
|
||||
|
||||
`vk_source` принимает screen name, полный URL (`vk.com` и `vk.ru`) или `owner_id` — можно указывать как есть, без ручной нормализации.
|
||||
|
||||
Файл — обычный JSON, но допускает построчные комментарии `// текст`, чтобы подписывать, где какой маршрут (полноценных JSON-комментариев не существует, здесь это добавлено отдельно — строка, у которой после пробелов идёт `//`, вырезается перед парсингом):
|
||||
|
||||
Reference in New Issue
Block a user