✅ Регистрация и верификация жильцов ✅ Рейтинг активности (уровни) ✅ Детект шпионов (Score 0-100) ✅ Анти-мат система (3 предупреждения → бан) ✅ Админ-панель с рассылкой ✅ Учёт квартир (несколько жильцов) ✅ Телефоны экстренных служб и мастеров ✅ Еженедельный экспорт JSON ✅ Прокси (socks5) для обхода РКН Бекап: backups/versions/v1.0_mvp_2026-02-26/ Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
9.6 KiB
9.6 KiB
😠 Рейтинг токсичности — 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: Авто-уведомление
Пользователь пишет токсичное сообщение:
ЗАТКНИСЬ УЖЕ НАКОНЕЦ!!! ТУПОЙ!!!
Бот автоматически:
- ✅ Анализирует токсичность (85/100)
- ✅ Удаляет сообщение (если настроено)
- ✅ Уведомляет админа:
⚠️ Токсичное сообщение! Пользователь: Иван Иванов ID: 123456789 Квартира: 45 Toxicity Score: 85/100 Проверьте через /toxic_stats 123456789
🗄️ База данных
Поля в users:
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. Топ токсичных
# Админ:
/toxic_top 7 10
- Топ отображается
- Уровни с emoji
- Статистика верная
2. Статистика пользователя
/toxic_stats 123456789
- Статистика отображается
- Категории показаны
3. Жалоба
/complaint 123456789 Тест
- Жалоба принята
- Счётчик увеличен
- При 3+ жалобах уведомление
4. Авто-анализ
# Отправить токсичное сообщение
- 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 |
🚀 Как использовать
Для админа:
-
Посмотреть топ токсичных:
/toxic_top -
Проверить пользователя:
/toxic_stats 123456789 -
Подать жалобу:
/complaint 123456789 Оскорбления -
Сбросить токсичность:
/clear_toxicity 123456789
💡 Советы
Настройка порогов:
В services/toxicity_detector.py:
'insults': ['дурак', 'идиот', ...], # Добавьте свои слова
Ложные срабатывания:
- Шутки между соседями — могут попасть под детект
- Цитирование — слова в кавычках тоже считаются
- Иностранные слова — могут совпадать с русскими
Когда банить:
- ✅ Score > 70 + много жалоб
- ✅ Повторные нарушения после предупреждений
- ✅ Угрозы расправы
🔧 Отладка
Посмотреть токсичность в БД:
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;
Логи:
tail -f logs/bot.log | grep -i "токсич\|toxic"
✅ Преимущества
| Было | Стало |
|---|---|
| Токсичные сообщения в чате | Авто-детект |
| Жалобы вручную | /complaint + уведомления |
| Нет статистики | Топ токсичных |
| Субъективная оценка | Toxicity Score 0-100 |
Рейтинг токсичности готов! 😠
Следующий шаг: тестирование на тестовой группе и фиксация версии v1.9