# 😠 Рейтинг токсичности — v1.9 **Версия:** v1.9 **Дата:** 26 февраля 2026 г. **Статус:** ✅ Реализовано --- ## 📋 Описание Система анализа токсичности сообщений и выявления конфликтных пользователей. Бот анализирует лексику на оскорбления, агрессию, угрозы, дискриминацию. Админ получает рейтинг токсичных пользователей и уведомления о токсичных сообщениях. --- ## 🎯 Возможности - ✅ Анализ лексики (оскорбления, агрессия, угрозы, дискриминация) - ✅ Детекция паттернов агрессии (CAPS, множественные знаки) - ✅ Toxicity Score 0-100 для каждого пользователя - ✅ Топ токсичных пользователей - ✅ Статистика по пользователю - ✅ Жалобы на пользователей - ✅ Уведомления о токсичных сообщениях - ✅ Уровни токсичности с emoji --- ## 📱 Команды ### Для администраторов: | Команда | Описание | Пример | |---------|----------|--------| | `/toxic_top [дни] [лимит]` | Топ токсичных пользователей | `/toxic_top 7 10` | | `/toxic_stats ` | Статистика токсичности | `/toxic_stats 123456789` | | `/toxicity_report` | Общий отчёт по чату | `/toxicity_report` | | `/clear_toxicity ` | Сбросить токсичность | `/clear_toxicity 123` | | `/complaint [причина]` | Жалоба на пользователя | `/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*