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

249 lines
6.2 KiB
Markdown
Raw 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.

# 🏆 Система рейтинга пользователей
**Дата добавления:** 24 февраля 2026
**Статус:** ✅ Готово
---
## 📋 Описание
Система рейтинга активности жильцов в чате. Только администраторы могут видеть и управлять рейтингом.
---
## 🎯 Уровни пользователей
| Уровень | Баллы | Иконка |
|---------|-------|--------|
| 🌱 Новичок | 0-99 | 🌱 |
| 🏠 Сосед | 100-499 | 🏠 |
| ⭐ Активист | 500-999 | ⭐ |
| 👑 Лидер | 1000+ | 👑 |
---
## 💰 Начисление баллов
**За что начисляются баллы:**
- 💬 **Сообщение в чате** — +1 балл
**Автоматическое обновление:**
- Уровень обновляется автоматически при изменении рейтинга
- Баллы начисляются за каждое сообщение в чате
---
## 🔐 Доступ
**Видят рейтинг:**
-**Только администраторы**
**Где видят:**
-**Только в личных сообщениях с ботом**
-В общий чат ничего не отправляется
---
## 📱 Команды для админа
### 1. `/rating` или `/рейтинг`
**Показать свой рейтинг:**
```bash
/rating
```
**Показать рейтинг пользователя по ID:**
```bash
/rating 123456789
```
**Показать рейтинг по username:**
```bash
/rating @username
```
**Пример ответа:**
```
📊 РЕЙТИНГ ПОЛЬЗОВАТЕЛЯ
👤 Петр Петров (кв. 88)
ID: 123456789
⭐ Уровень: Активист
🏆 Рейтинг: 567 баллов
💬 Сообщений: 543
📈 До следующего уровня: 433 баллов
```
---
### 2. `/top` или `/топ`
**Топ-10 пользователей по рейтингу:**
```bash
/top
```
**Пример ответа:**
```
🏆 ТОП-10 ПО РЕЙТИНГУ
🥇 Петр Петров (кв. 88)
└─ Рейтинг: 567 | Уровень: Активист
🥈 Анна Иванова (кв. 45)
└─ Рейтинг: 432 | Уровень: Сосед
🥉 Иван Сидоров (кв. 12)
└─ Рейтинг: 298 | Уровень: Сосед
4. Мария Козлова
└─ Рейтинг: 156 | Уровень: Сосед
...
```
---
### 3. `/rank` или `/ранг`
**Распределение по уровням:**
```bash
/rank
```
**Пример ответа:**
```
📊 РАСПРЕДЕЛЕНИЕ ПО УРОВНЯМ
Всего пользователей: 50
👑 Лидер: 2 (4.0%)
⭐ Активист: 8 (16.0%)
🏠 Сосед: 25 (50.0%)
🌱 Новичок: 15 (30.0%)
Уровни:
🌱 Новичок: 0-99 баллов
🏠 Сосед: 100-499 баллов
⭐ Активист: 500-999 баллов
👑 Лидер: 1000+ баллов
```
---
## 🖱️ Кнопки в меню админа
**Главное меню:**
- 🏆 **Рейтинг** — показывает Топ-10
**Меню рейтинга:**
- 🏆 **Топ-10** — топ пользователей
- 📊 **Уровни** — распределение по уровням
- 🔙 **Назад** — в главное меню
---
## 🛡️ Защита
**Все команды защищены:**
1.**Только администраторы** — декоратор `@admin_only`
2.**Только в личке** — проверка `message.chat.type != 'private'`
3.**В общий чат не отправляется** — уведомление если не в личке
**Если не админ пытается:**
```
❌ Команда недоступна
```
**Если в чате (не в личке):**
```
⚠️ Команда доступна только в личных сообщениях!
Напишите боту в личку: /top
```
---
## 📊 База данных
**Новые поля в таблице `users`:**
- `rating` (INTEGER) — баллы активности, по умолчанию 0
- `level` (TEXT) — уровень, по умолчанию 'Новичок'
**Миграция:**
```bash
cd ~/domovoy_bot
python database/migrate_add_rating.py
```
---
## 🧪 Тестирование
### Тест 1: Начисление баллов
1. Отправь сообщение в чат
2. Проверь рейтинг через `/rating <твой_ID>`
3. Ожидай: +1 балл
### Тест 2: Топ пользователей
1. В личку боту: `/top`
2. Ожидай: список топ-10
### Тест 3: Распределение
1. В личку боту: `/rank`
2. Ожидай: проценты по уровням
### Тест 4: Защита в чате
1. В общем чате: `/top`
2. Ожидай: "Команда доступна только в личных сообщениях"
### Тест 5: Кнопка Рейтинг
1. В личку: `/admin`
2. Нажми "🏆 Рейтинг"
3. Ожидай: топ-10 + кнопки "Топ-10", "Уровни"
---
## 📁 Изменённые файлы
| Файл | Изменения |
|------|-----------|
| `database/models.py` | Добавлены поля `rating`, `level` |
| `database/migrate_add_rating.py` | Скрипт миграции |
| `handlers/chat_monitor.py` | Начисление +1 балл за сообщение |
| `handlers/admin.py` | Команды `/rating`, `/top`, `/rank` |
| `keyboards/admin_menu.py` | Кнопка "🏆 Рейтинг" |
---
## 🚀 Как использовать
**Для админа:**
1. **Проверить свой рейтинг:**
```
/rating
```
2. **Проверить рейтинг жильца:**
```
/users # Найти ID
/rating 123456789
```
3. **Посмотреть топ:**
```
/top
```
Или через меню: `/admin` → "🏆 Рейтинг"
4. **Посмотреть уровни:**
```
/rank
```
---
**Система рейтинга готова!** 🎉