✅ Регистрация и верификация жильцов ✅ Рейтинг активности (уровни) ✅ Детект шпионов (Score 0-100) ✅ Анти-мат система (3 предупреждения → бан) ✅ Админ-панель с рассылкой ✅ Учёт квартир (несколько жильцов) ✅ Телефоны экстренных служб и мастеров ✅ Еженедельный экспорт JSON ✅ Прокси (socks5) для обхода РКН Бекап: backups/versions/v1.0_mvp_2026-02-26/ Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
346 lines
9.6 KiB
Markdown
346 lines
9.6 KiB
Markdown
# 😠 Рейтинг токсичности — v1.9
|
||
|
||
**Версия:** v1.9
|
||
**Дата:** 26 февраля 2026 г.
|
||
**Статус:** ✅ Реализовано
|
||
|
||
---
|
||
|
||
## 📋 Описание
|
||
|
||
Система анализа токсичности сообщений и выявления конфликтных пользователей. Бот анализирует лексику на оскорбления, агрессию, угрозы, дискриминацию. Админ получает рейтинг токсичных пользователей и уведомления о токсичных сообщениях.
|
||
|
||
---
|
||
|
||
## 🎯 Возможности
|
||
|
||
- ✅ Анализ лексики (оскорбления, агрессия, угрозы, дискриминация)
|
||
- ✅ Детекция паттернов агрессии (CAPS, множественные знаки)
|
||
- ✅ Toxicity Score 0-100 для каждого пользователя
|
||
- ✅ Топ токсичных пользователей
|
||
- ✅ Статистика по пользователю
|
||
- ✅ Жалобы на пользователей
|
||
- ✅ Уведомления о токсичных сообщениях
|
||
- ✅ Уровни токсичности с emoji
|
||
|
||
---
|
||
|
||
## 📱 Команды
|
||
|
||
### Для администраторов:
|
||
|
||
| Команда | Описание | Пример |
|
||
|---------|----------|--------|
|
||
| `/toxic_top [дни] [лимит]` | Топ токсичных пользователей | `/toxic_top 7 10` |
|
||
| `/toxic_stats <user_id>` | Статистика токсичности | `/toxic_stats 123456789` |
|
||
| `/toxicity_report` | Общий отчёт по чату | `/toxicity_report` |
|
||
| `/clear_toxicity <user_id>` | Сбросить токсичность | `/clear_toxicity 123` |
|
||
| `/complaint <user_id> [причина]` | Жалоба на пользователя | `/complaint 123 Оскорбления` |
|
||
|
||
---
|
||
|
||
## 🎯 Категории токсичности
|
||
|
||
| Категория | Примеры слов | Баллы |
|
||
|-----------|--------------|-------|
|
||
| **Оскорбления** | дурак, идиот, кретин, придурок, хам | +15 |
|
||
| **Агрессия** | заткнись, убью, ненавижу, достал | +15 |
|
||
| **Угрозы** | угрожаю, пожалеешь, найду, разберусь | +15 |
|
||
| **Дискриминация** | национальн, расов, религиозн | +15 |
|
||
| **CAPS LOCK** | >50% заглавных букв | +15 |
|
||
| **Паттерны** | !!!, ???, АААА, повторы | +10 |
|
||
|
||
---
|
||
|
||
## 🎯 Уровни токсичности
|
||
|
||
| Score | Уровень | Emoji | Действие |
|
||
|-------|---------|-------|----------|
|
||
| 0-10 | 😊 Нормальный | 😊 | Нет действий |
|
||
| 10-30 | 😐 Нейтральный | 😐 | Нет действий |
|
||
| 30-50 | ⚠️ Подозрительный | ⚠️ | Пометка в базе |
|
||
| 50-70 | 😠 Токсичный | 😠 | Уведомление админа |
|
||
| 70+ | 🚫 Очень токсичный | 🚫 | Рекомендуется бан |
|
||
|
||
---
|
||
|
||
## 🎯 Сценарии использования
|
||
|
||
### Сценарий 1: Топ токсичных
|
||
|
||
**Админ:**
|
||
```
|
||
/toxic_top 7 10
|
||
```
|
||
|
||
**Бот:**
|
||
```
|
||
😠 Топ токсичных пользователей (за 7 дн.)
|
||
|
||
1. Иван Иванов (кв. 45) 😠
|
||
└─ Сообщений: 150
|
||
└─ Токсичных: 45 (30%)
|
||
└─ Средняя токсичность: 35
|
||
└─ Максимальная: 80
|
||
|
||
2. Петр Петров (кв. 88) ⚠️
|
||
└─ Сообщений: 100
|
||
└─ Токсичных: 20 (20%)
|
||
└─ Средняя токсичность: 25
|
||
└─ Максимальная: 60
|
||
```
|
||
|
||
---
|
||
|
||
### Сценарий 2: Статистика пользователя
|
||
|
||
**Админ:**
|
||
```
|
||
/toxic_stats 123456789
|
||
```
|
||
|
||
**Бот:**
|
||
```
|
||
😠 Токсичность: Иван Иванов
|
||
|
||
Квартира: 45
|
||
Уровень: 😠 Токсичный
|
||
|
||
📊 Статистика (7 дн.)
|
||
├─ Всего сообщений: 150
|
||
├─ Токсичных: 45 (30%)
|
||
├─ Средняя токсичность: 35
|
||
└─ Максимальная: 80
|
||
|
||
📁 Категории
|
||
└─ insults: 25
|
||
└─ aggression: 15
|
||
└─ CAPS LOCK: 5
|
||
```
|
||
|
||
---
|
||
|
||
### Сценарий 3: Жалоба на пользователя
|
||
|
||
**Админ:**
|
||
```
|
||
/complaint 123456789 Оскорбления соседей
|
||
```
|
||
|
||
**Бот:**
|
||
```
|
||
✅ Жалоба принята
|
||
|
||
Пользователь: Иван Иванов
|
||
Причина: Оскорбления соседей
|
||
Всего жалоб: 1
|
||
```
|
||
|
||
**Если жалоб >= 3:**
|
||
```
|
||
⚠️ Много жалоб!
|
||
|
||
Пользователь: Иван Иванов
|
||
Жалоб: 3
|
||
|
||
Рекомендуется проверить через /toxic_stats 123456789
|
||
```
|
||
|
||
---
|
||
|
||
### Сценарий 4: Общий отчёт
|
||
|
||
**Админ:**
|
||
```
|
||
/toxicity_report
|
||
```
|
||
|
||
**Бот:**
|
||
```
|
||
📊 Отчёт по токсичности
|
||
|
||
👥 Пользователей: 100
|
||
😠 Токсичных: 15 (15.0%)
|
||
📝 Всего жалоб: 25
|
||
|
||
🔥 Топ-5 токсичных (7 дн.)
|
||
|
||
1. Иван Иванов 😠 — 35
|
||
2. Петр Петров ⚠️ — 25
|
||
3. Анна Сидорова ⚠️ — 20
|
||
4. Мария Козлова 😐 — 15
|
||
5. Василий Смирнов 😐 — 10
|
||
```
|
||
|
||
---
|
||
|
||
### Сценарий 5: Авто-уведомление
|
||
|
||
**Пользователь пишет токсичное сообщение:**
|
||
```
|
||
ЗАТКНИСЬ УЖЕ НАКОНЕЦ!!! ТУПОЙ!!!
|
||
```
|
||
|
||
**Бот автоматически:**
|
||
1. ✅ Анализирует токсичность (85/100)
|
||
2. ✅ Удаляет сообщение (если настроено)
|
||
3. ✅ Уведомляет админа:
|
||
```
|
||
⚠️ Токсичное сообщение!
|
||
|
||
Пользователь: Иван Иванов
|
||
ID: 123456789
|
||
Квартира: 45
|
||
Toxicity Score: 85/100
|
||
|
||
Проверьте через /toxic_stats 123456789
|
||
```
|
||
|
||
---
|
||
|
||
## 🗄️ База данных
|
||
|
||
### Поля в `users`:
|
||
```sql
|
||
ALTER TABLE users ADD COLUMN toxicity_score INTEGER DEFAULT 0
|
||
ALTER TABLE users ADD COLUMN toxic_messages_count INTEGER DEFAULT 0
|
||
ALTER TABLE users ADD COLUMN complaints_count INTEGER DEFAULT 0
|
||
```
|
||
|
||
---
|
||
|
||
## 🧪 Тестирование
|
||
|
||
### Чек-лист проверки:
|
||
|
||
#### 1. Топ токсичных
|
||
```bash
|
||
# Админ:
|
||
/toxic_top 7 10
|
||
```
|
||
- [ ] Топ отображается
|
||
- [ ] Уровни с emoji
|
||
- [ ] Статистика верная
|
||
|
||
#### 2. Статистика пользователя
|
||
```bash
|
||
/toxic_stats 123456789
|
||
```
|
||
- [ ] Статистика отображается
|
||
- [ ] Категории показаны
|
||
|
||
#### 3. Жалоба
|
||
```bash
|
||
/complaint 123456789 Тест
|
||
```
|
||
- [ ] Жалоба принята
|
||
- [ ] Счётчик увеличен
|
||
- [ ] При 3+ жалобах уведомление
|
||
|
||
#### 4. Авто-анализ
|
||
```bash
|
||
# Отправить токсичное сообщение
|
||
```
|
||
- [ ] Score считается
|
||
- [ ] Админ уведомлён при >50
|
||
|
||
---
|
||
|
||
## 📁 Изменённые файлы
|
||
|
||
| Файл | Изменения |
|
||
|------|-----------|
|
||
| `database/models.py` | Поля toxicity_score, toxic_messages_count, complaints_count |
|
||
| `database/migrate_add_toxicity.py` | Миграция БД |
|
||
| `services/toxicity_detector.py` | Сервис детекта |
|
||
| `handlers/toxicity.py` | Хендлеры |
|
||
| `handlers/chat_monitor.py` | Авто-анализ токсичности |
|
||
| `handlers/__init__.py` | Импорт toxicity_router |
|
||
| `main.py` | Регистрация toxicity_router |
|
||
|
||
---
|
||
|
||
## 🚀 Как использовать
|
||
|
||
### Для админа:
|
||
|
||
1. **Посмотреть топ токсичных:**
|
||
```
|
||
/toxic_top
|
||
```
|
||
|
||
2. **Проверить пользователя:**
|
||
```
|
||
/toxic_stats 123456789
|
||
```
|
||
|
||
3. **Подать жалобу:**
|
||
```
|
||
/complaint 123456789 Оскорбления
|
||
```
|
||
|
||
4. **Сбросить токсичность:**
|
||
```
|
||
/clear_toxicity 123456789
|
||
```
|
||
|
||
---
|
||
|
||
## 💡 Советы
|
||
|
||
### Настройка порогов:
|
||
|
||
В `services/toxicity_detector.py`:
|
||
```python
|
||
'insults': ['дурак', 'идиот', ...], # Добавьте свои слова
|
||
```
|
||
|
||
### Ложные срабатывания:
|
||
|
||
- **Шутки между соседями** — могут попасть под детект
|
||
- **Цитирование** — слова в кавычках тоже считаются
|
||
- **Иностранные слова** — могут совпадать с русскими
|
||
|
||
### Когда банить:
|
||
|
||
- ✅ Score > 70 + много жалоб
|
||
- ✅ Повторные нарушения после предупреждений
|
||
- ✅ Угрозы расправы
|
||
|
||
---
|
||
|
||
## 🔧 Отладка
|
||
|
||
### Посмотреть токсичность в БД:
|
||
```bash
|
||
cd /home/matrixhasyou/domovoy_bot
|
||
source venv/bin/activate
|
||
sqlite3 database/domovoy.db
|
||
|
||
SELECT user_id, toxicity_score, toxic_messages_count, complaints_count
|
||
FROM users
|
||
WHERE toxicity_score > 0
|
||
ORDER BY toxicity_score DESC;
|
||
```
|
||
|
||
### Логи:
|
||
```bash
|
||
tail -f logs/bot.log | grep -i "токсич\|toxic"
|
||
```
|
||
|
||
---
|
||
|
||
## ✅ Преимущества
|
||
|
||
| Было | Стало |
|
||
|------|-------|
|
||
| Токсичные сообщения в чате | **Авто-детект** |
|
||
| Жалобы вручную | **/complaint + уведомления** |
|
||
| Нет статистики | **Топ токсичных** |
|
||
| Субъективная оценка | **Toxicity Score 0-100** |
|
||
|
||
---
|
||
|
||
**Рейтинг токсичности готов! 😠**
|
||
|
||
*Следующий шаг: тестирование на тестовой группе и фиксация версии v1.9*
|