domovoy_bot/БЕЗОПАСНОСТЬ.md
Admin ba4676b0af v1.0 MVP - Инициализация проекта 🏠
 Регистрация и верификация жильцов
 Рейтинг активности (уровни)
 Детект шпионов (Score 0-100)
 Анти-мат система (3 предупреждения → бан)
 Админ-панель с рассылкой
 Учёт квартир (несколько жильцов)
 Телефоны экстренных служб и мастеров
 Еженедельный экспорт JSON
 Прокси (socks5) для обхода РКН

Бекап: backups/versions/v1.0_mvp_2026-02-26/

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-27 10:54:16 +00:00

283 lines
8.7 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

# 🛡️ Безопасность: Бан, Отзыв верификации, Логирование
## ✅ Что добавлено:
### 1⃣ Отзыв верификации (`/unverify`)
### 2⃣ Бан / Разбан (`/ban`, `/unban`)
### 3⃣ Логирование подозрительных (`/log_spy`)
### 4⃣ Авто-удаление через 7 дней
### 5⃣ Отдельные логи для шпионов
---
## 📋 Все команды безопасности
| Команда | Описание | Пример |
|---------|----------|--------|
| `/unverify <ID> [причина]` | Отозвать верификацию | `/unverify 123456789 Шпион УК` |
| `/ban <ID> [причина]` | Забанить + удалить из чата | `/ban 123456789 Мат` |
| `/unban <ID>` | Разбанить | `/unban 123456789` |
| `/log_spy <ID> [коммент]` | Создать лог подозрительного | `/log_spy 123456789 Странные сообщения` |
| `/banned` | Список забаненных | `/banned` |
| `/unverified_list` | С отозванной верификацией | `/unverified_list` |
| `/check_unverified` | Проверка кто не верифицирован >7 дней | `/check_unverified` |
---
## 🎯 Сценарий 1: Подозрительный жилец
**Проблема:** Жилец ведёт себя подозрительно, возможно шпион УК.
**Решение (по шагам):**
### Шаг 1: Создаём лог
```bash
/log_spy 123456789 Подозрительная активность в пользу УК
```
**Что происходит:**
- Spy Score увеличивается на 20
- Создаётся запись в БД
- **Сохраняется отдельный лог-файл** в `logs/spy_logs/`
**Файл лога:**
```
logs/spy_logs/123456789_username_20260223_170000.log
```
### Шаг 2: Если подозрения подтвердились — отзываем верификацию
```bash
/unverify 123456789 Подозрение на шпиона УК
```
**Что происходит:**
- Пользователь становится `verified=False`
- Ему отправляется уведомление в личку
- **Даётся 7 дней** на повторную верификацию
- Админ получает подтверждение
**Пользователь получает:**
```
⚠️ Верификация отозвана
Причина: Подозрение на шпиона УК
❗ Что дальше:
У вас есть 7 дней на повторную верификацию.
Если не пройдёте верификацию — будете удалены из чата.
Для верификации напишите боту номер квартиры в личку.
```
### Шаг 3: Если не верифицировался за 7 дней — авто-удаление
**Бот автоматически:**
- Проверяет каждый день в 03:00
- Находит кто не верифицирован >7 дней
- **Удаляет из чата**
- Помечает `is_banned=True`
- Уведомляет админа
**Админ получает:**
```
🗑️ Пользователь удалён из чата
Пользователь: Иван Иванов
Квартира: 45
Причина: Не прошёл верификацию за 7 дней
```
---
## 🎯 Сценарий 2: Грубое нарушение (мат, спам)
**Проблема:** Пользователь нарушает правила чата.
**Решение:**
```bash
/ban 123456789 Мат и оскорбления
```
**Что происходит:**
- `is_banned=True` в БД
- Бот **пытается удалить из чата** (нужны права админа!)
- Если не удалось — админ получает уведомление удалить вручную
**Если нужно удалить вручную:**
1. Зайди в чат
2. Найди пользователя
3. Удали через интерфейс Telegram
---
## 🎯 Сценарий 3: Ошибка, пользователь не шпион
**Проблема:** Отозвали верификацию, но пользователь не шпион.
**Решение:**
### Вариант А: Просто верифицируем заново
Пользователь пишет боту в личку: `45`
Админ подтверждает: `/verify_approve 123456789`
### Вариант Б: Разбан (если был забанен)
```bash
/unban 123456789
```
---
## 📊 Логи подозрительных
### Где хранятся:
```
/home/matrixhasyou/domovoy_bot/logs/spy_logs/
```
### Имя файла:
```
{user_id}_{username}_{дата}.log
```
**Пример:**
```
123456789_ivanov_20260223_170000.log
```
### Что внутри:
```
=== ЛОГ ПОДОЗРИТЕЛЬНОЙ АКТИВНОСТИ ===
Дата: 23.02.2026 17:00
Пользователь: Иван Иванов
ID: 123456789
Username: @ivanov
Квартира: 45
Spy Score: 65/100
Комментарий админа:
Подозрительная активность в пользу УК
=== История сообщений (последние 50) ===
(см. в основном экспорте)
=== Статус ===
Верифицирован: Нет
Забанен: Нет
```
---
## ⏰ Автоматические проверки
### Ежедневно в 02:00 — Проверка шпионов
- Анализирует Spy Score
- При score > 60 — уведомление админу
### Ежедневно в 03:00 — Проверка неверифицированных
- Находит кто не верифицирован >7 дней
- **Удаляет из чата автоматически**
- Уведомляет админа
---
## 🧪 Тестирование
### Тест 1: Отзыв верификации
1. **С второго аккаунта** верифицируйся: `100`
2. **Админ получает** уведомление
3. **Админ подтверждает:** `/verify_approve <ID>`
4. **Админ отзывает:** `/unverify <ID> Тест`
5. **Пользователь получает** уведомление о 7 днях
### Тест 2: Проверка авто-удаления
**Для быстрого теста** (не ждать 7 дней):
1. В БД вручную измени `verification_date` на 8 дней назад:
```sql
UPDATE users SET verification_date=datetime('now', '-8 days') WHERE user_id=123456789;
```
2. Запусти проверку:
```bash
/check_unverified
```
3. Бот покажет список на удаление
### Тест 3: Логирование
1. Создай лог:
```bash
/log_spy 123456789 Тестовая запись
```
2. Проверь файл:
```bash
ls -la logs/spy_logs/
cat logs/spy_logs/*_123456789_*.log
```
---
## 💡 Золотой сценарий для шпиона
```
1. /log_spy 123456789 Странные сообщения в пользу УК
→ Spy Score +20, лог сохранён
2. /spies
→ Проверяешь что score стал >60
3. /unverify 123456789 Подозрение на шпиона
→ Верификация отозвана, дано 7 дней
4. Ждёшь 7 дней
→ Если не верифицировался:
5. Бот автоматически удаляет в 03:00
→ Админ получает уведомление
```
**Всё приватно!** Никто в группе не видит.
---
## 📊 Мониторинг
### Посмотреть забаненных:
```bash
/banned
```
### Посмотреть с отозванной верификацией:
```bash
/unverified_list
```
### Проверить кто не верифицирован >7 дней:
```bash
/check_unverified
```
### Посмотреть логи шпионов:
```bash
ls -la logs/spy_logs/
```
---
## ✅ Преимущества
| Было | Стало |
|------|-------|
| Нельзя отозвать верификацию | `/unverify` — отзыв с причиной |
| Нет банов | `/ban` — бан + удаление |
| Нет логов подозрительных | Отдельные логи в `logs/spy_logs/` |
| Ручное удаление | **Авто-удаление через 7 дней** |
| Не видно кто не верифицирован | `/unverified_list` — полный список |
---
**Теперь полная безопасность дома!** 🛡️🚀