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

351 lines
9.6 KiB
Markdown
Raw 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.

# 🔍 Детект мультиаккаунтов — v1.7
**Версия:** v1.7
**Дата:** 26 февраля 2026 г.
**Статус:** ✅ Реализовано
---
## 📋 Описание
Система выявления нескольких аккаунтов от одного человека. Анализирует паттерны поведения, время активности, схожесть сообщений для обнаружения шпионов или людей создающих несколько аккаунтов для накрутки мнения в чате.
---
## 🎯 Возможности
- ✅ Анализ активности по времени (24 часа)
- ✅ Сравнение паттернов сообщений
- ✅ Проверка схожести пиков активности
- ✅ Выявление пар подозрительных аккаунтов
- ✅ Проверка квартир с несколькими жильцами
- ✅ multicount_score (0-100) для каждого пользователя
- ✅ Команды для админов: `/multicheck`, `/check_apt`, `/multistats`
---
## 📱 Команды
### Для администраторов:
| Команда | Описание | Пример |
|---------|----------|--------|
| `/multicheck` | Проверить всех на мультиаккаунты | `/multicheck` |
| `/check_apt <номер>` | Проверить квартиру | `/check_apt 45` |
| `/multistats` | Статистика мультиаккаунтов | `/multistats` |
| `/clear_multiscore <ID>` | Сбросить score | `/clear_multiscore 123456789` |
| `/link_accounts <ID1> <ID2>` | Связать аккаунты (семья) | `/link_accounts 123 456` |
---
## 🎯 Факторы анализа
### 1. Схожесть активности по времени
- Анализируется за последние 24 часа
- Сравнивается распределение сообщений по часам
- **Порог:** 80% схожести → +30 баллов
### 2. Паттерны сообщений
- Длина сообщений (короткие/средние/длинные)
- Наличие ссылок
- Наличие emoji
- Вопросы
- Приветствия
- **Порог:** 70% схожести → +20 баллов
### 3. Время регистрации
- Если зарегистрировались в течение часа → +10 баллов
### 4. Device ID
- Telegram не отдаёт device ID через Bot API
- Зарезервировано на будущее
---
## 🎯 Пороги подозрительности
| Score | Статус | Действие |
|-------|--------|----------|
| 0-30 | 🟢 Норма | Нет действий |
| 31-50 | 🟡 Подозрительно | Пометка в базе |
| 51+ | 🔴 Мультиаккаунт | Уведомление админа |
---
## 🎯 Сценарии использования
### Сценарий 1: Проверка всех пользователей
**Админ:**
```
/multicheck
```
**Бот:**
```
🔍 Анализирую пользователей на мультиаккаунты...
🚨 Обнаружены подозрительные пары (2)
1. Пара #1
├─ Иван Иванов (кв. 45)
└─ Петр Петров (кв. 88)
└─ Score: 60/100
└─ Причины: Схожая активность (85%), Схожие паттерны сообщений (75%)
2. Пара #2
├─ Анна Сидорова (кв. 12)
└─ Мария Козлова (кв. 12)
└─ Score: 50/100
└─ Причины: Зарегистрировались в течение часа
💡 Для проверки квартиры: /check_apt <номер>
```
---
### Сценарий 2: Проверка квартиры
**Админ:**
```
/check_apt 45
```
**Бот:**
```
🏠 Квартира 45 — 2 жильцов
1. Иван Иванов (@ivanov)
└─ ID: 123456789
└─ Верифицирован: ✅
└─ Сообщений: 150
└─ Рейтинг: 200
2. Петр Петров (@petrov)
└─ ID: 987654321
└─ Верифицирован: ✅
└─ Сообщений: 145
└─ Рейтинг: 195
⚠️ Внимание! В квартире 2 человека — это много!
💡 Для детальной проверки: /multicheck
```
---
### Сценарий 3: Статистика
**Админ:**
```
/multistats
```
**Бот:**
```
📊 Статистика мультиаккаунтов
🔴 Пользователей с подозрительным score: 3
• Иван Иванов (кв. 45) — score: 60
• Петр Петров (кв. 88) — score: 55
• Анна Сидорова (кв. 12) — score: 50
🏠 Квартир с несколькими жильцами: 5
• Кв. 45 — 3 чел.
• Кв. 88 — 2 чел.
• Кв. 12 — 2 чел.
```
---
### Сценарий 4: Сброс score (семья)
**Админ видит что семья (муж и жена) попали под детект:**
**Админ:**
```
/link_accounts 123456789 987654321
```
**Бот:**
```
✅ Аккаунты связаны:
• Иван Иванов (ID: 123456789)
• Анна Иванова (ID: 987654321)
multicount_score сброшен
```
---
### Сценарий 5: Ручной сброс
**Админ:**
```
/clear_multiscore 123456789
```
**Бот:**
```
✅ multicount_score пользователя 123456789 сброшен
```
---
## 🗄️ База данных
### Поля в `users`:
```sql
ALTER TABLE users ADD COLUMN multicount_score INTEGER DEFAULT 0
ALTER TABLE users ADD COLUMN suspected_device_id TEXT
ALTER TABLE users ADD COLUMN suspected_alt_accounts TEXT
```
### Индексы:
- `ix_users_multicount_score` — по score (можно добавить)
---
## 🧪 Тестирование
### Чек-лист проверки:
#### 1. Проверка всех пользователей
```bash
# Админ:
/multicheck
```
- [ ] Анализ запускается
- [ ] Подозрительные пары находятся
- [ ] Score считается правильно
#### 2. Проверка квартиры
```bash
# Админ:
/check_apt 45
```
- [ ] Пользователи в квартире отображаются
- [ ] Информация верная
#### 3. Статистика
```bash
/multistats
```
- [ ] Статистика отображается
- [ ] Квартиры с несколькими считаются
#### 4. Сброс score
```bash
/clear_multiscore <ID>
```
- [ ] Score сбрасывается
#### 5. Связывание аккаунтов
```bash
/link_accounts <ID1> <ID2>
```
- [ ] Аккаунты связываются
- [ ] Score сбрасывается
---
## 📁 Изменённые файлы
| Файл | Изменения |
|------|-----------|
| `database/models.py` | Поля multicount_score, suspected_device_id, suspected_alt_accounts |
| `database/migrate_add_multicount.py` | Миграция БД |
| `services/multicount_detector.py` | Сервис детекта |
| `handlers/multicount.py` | Хендлеры |
| `handlers/__init__.py` | Импорт multicount_router |
| `main.py` | Регистрация multicount_router |
---
## 🚀 Как использовать
### Для админа:
1. **Проверить всех:**
```
/multicheck
```
2. **Проверить квартиру:**
```
/check_apt 45
```
3. **Посмотреть статистику:**
```
/multistats
```
4. **Сбросить score (семья):**
```
/link_accounts 123456789 987654321
```
---
## 💡 Советы
### Когда использовать:
- ✅ Подозрение на шпиона УК
- ✅ Несколько аккаунтов от одного человека
- ✅ Накрутка мнения в голосованиях
- ✅ Проверка квартир с несколькими жильцами
### Ложные срабатывания:
-**Семья (муж и жена)** — используйте `/link_accounts`
-**Соседи по квартире** — нормально если это родственники
-**Активные жильцы** — могут иметь схожую активность
### Настройка порогов:
В `services/multicount_detector.py`:
```python
'activity_similarity_threshold': 0.8, # Порог схожести активности
'message_pattern_threshold': 0.7, # Порог схожести паттернов
```
---
## 🔧 Отладка
### Посмотреть score в БД:
```bash
cd /home/matrixhasyou/domovoy_bot
source venv/bin/activate
sqlite3 database/domovoy.db
SELECT user_id, apartment, multicount_score, suspected_alt_accounts
FROM users
WHERE multicount_score > 0;
```
### Логи:
```bash
tail -f logs/bot.log | grep -i "мульти\|multicount"
```
---
## ✅ Преимущества
| Было | Стало |
|------|-------|
| Нельзя выявить мультиаккаунты | **Анализ паттернов** |
| Нет статистики | **/multistats** |
| Ручная проверка | **Авто-детект** |
| Нет связи аккаунтов | **/link_accounts для семьи** |
---
**Детект мультиаккаунтов готов! 🔍**
*Следующий шаг: тестирование на тестовой группе и фиксация версии v1.7*