✅ Регистрация и верификация жильцов ✅ Рейтинг активности (уровни) ✅ Детект шпионов (Score 0-100) ✅ Анти-мат система (3 предупреждения → бан) ✅ Админ-панель с рассылкой ✅ Учёт квартир (несколько жильцов) ✅ Телефоны экстренных служб и мастеров ✅ Еженедельный экспорт JSON ✅ Прокси (socks5) для обхода РКН Бекап: backups/versions/v1.0_mvp_2026-02-26/ Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
351 lines
9.6 KiB
Markdown
351 lines
9.6 KiB
Markdown
# 🔍 Детект мультиаккаунтов — 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*
|