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

346 lines
9.6 KiB
Markdown
Raw Permalink 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.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*