AGENTS.MD: мониторинг per-chat

This commit is contained in:
Алексей Будаев 2026-06-14 01:00:27 +08:00
parent 76dcb8ed52
commit 39e78df55b

View file

@ -381,6 +381,10 @@ OpenDKIM milter (`Mode sv`) верифицирует входящие, но не
- **`deltabot.py` `/join`:** проверка URL заменена с `"i.delta.chat" in value` на `re.match(r'https://i\.delta\.chat/#', value)` — устраняет обход подстрокой.
- **`deltabot.py` `/save` и `/channels image`:** `file_blob` валидируется через `os.path.realpath` + проверка что результирующий путь остаётся внутри `ACCOUNTS_DIR` — защита от path traversal.
### 14.06.2026 — Мониторинг per-chat
- **`deltabot.py` `monitor_worker()` и `/monitor`:** мониторы разграничены по чатам. `monitors.json``{chat_id: [...]}` (был глобальный список). `/monitor list` показывает только свои мониторы, алерты уходят только в чат-владелец. Добавлена автоматическая миграция старого формата.
### 13.06.2026 — Изоляция бота
- **`deltabot.py`:** добавлена проверка отправителя в начале `handle_message`. Сообщения от неизвестных email игнорируются без ответа.
@ -490,16 +494,17 @@ TRUSTED_DOMAINS = {"budaev.org", "dc.budaev.org"}
## Мониторинг сайтов (/monitor)
**Файл:** `~/.config/deltabot/monitors.json`
**Воркер:** `monitor_worker()` — проверяет каждые 5 минут, шлёт алерт всем подписчикам при смене статуса.
**Формат:** `{chat_id: [{url, last_ok, last_check, last_detail}, ...]}` — каждый чат видит только свои мониторы.
**Воркер:** `monitor_worker()` — проверяет каждые 5 минут, шлёт алерт в чат, который добавил монитор, при смене статуса.
| Команда | Действие |
|---------|----------|
| `/monitor add <url>` | Добавить (мгновенная проверка при добавлении) |
| `/monitor list` | Список с последним статусом |
| `/monitor list` | Список (только своего чата) |
| `/monitor remove <N\|url>` | Удалить по номеру или URL |
| `/monitor check` | Немедленная проверка всех |
| `/monitor check` | Немедленная проверка всех (своего чата) |
Алерт при падении отправляется **всем подписчикам** (`subscribers.json`).
Алерт при падении отправляется только в чат, добавивший монитор. **Не используется `subscribers.json`.**
---