✅ Регистрация и верификация жильцов ✅ Рейтинг активности (уровни) ✅ Детект шпионов (Score 0-100) ✅ Анти-мат система (3 предупреждения → бан) ✅ Админ-панель с рассылкой ✅ Учёт квартир (несколько жильцов) ✅ Телефоны экстренных служб и мастеров ✅ Еженедельный экспорт JSON ✅ Прокси (socks5) для обхода РКН Бекап: backups/versions/v1.0_mvp_2026-02-26/ Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
367 lines
9.4 KiB
Markdown
367 lines
9.4 KiB
Markdown
# 🏆 Достижения жильцов — v1.12
|
||
|
||
**Версия:** v1.12
|
||
**Дата:** 27 февраля 2026 г.
|
||
**Статус:** ✅ Реализовано
|
||
|
||
---
|
||
|
||
## 📋 Описание
|
||
|
||
Система геймификации для жильцов. Пользователи получают достижения за активность в чате, верификацию, высокий рейтинг и другие действия. Есть топ пользователей по достижениям.
|
||
|
||
---
|
||
|
||
## 🎯 Возможности
|
||
|
||
- ✅ 16 достижений в 9 категориях
|
||
- ✅ Авто-выдача достижений
|
||
- ✅ Уведомления о новых достижениях
|
||
- ✅ Топ пользователей по достижениям
|
||
- ✅ Просмотр своих достижений
|
||
- ✅ Просмотр достижений других (админ)
|
||
|
||
---
|
||
|
||
## 🏆 Список достижений
|
||
|
||
### 📝 Активность
|
||
|
||
| Достижение | Emoji | Описание |
|
||
|------------|-------|----------|
|
||
| **Новичок** | 🌱 | Первое сообщение в чате |
|
||
| **Активист 10** | 📝 | 10 сообщений в чате |
|
||
| **Активист 100** | ✍️ | 100 сообщений в чате |
|
||
| **Говорун 1000** | 🗣️ | 1000 сообщений в чате |
|
||
|
||
---
|
||
|
||
### ✅ Верификация
|
||
|
||
| Достижение | Emoji | Описание |
|
||
|------------|-------|----------|
|
||
| **Свой человек** | ✅ | Пройдена верификация |
|
||
|
||
---
|
||
|
||
### ⭐ Рейтинг
|
||
|
||
| Достижение | Emoji | Описание |
|
||
|------------|-------|----------|
|
||
| **Сосед** | 🏠 | Рейтинг 100 баллов |
|
||
| **Активист** | ⭐ | Рейтинг 500 баллов |
|
||
| **Лидер** | 👑 | Рейтинг 1000 баллов |
|
||
|
||
---
|
||
|
||
### ⏰ Время
|
||
|
||
| Достижение | Emoji | Описание |
|
||
|------------|-------|----------|
|
||
| **Жаворонок** | 🐦 | Сообщение в 6-7 утра |
|
||
| **Сова** | 🦉 | Сообщение после 23:00 |
|
||
|
||
---
|
||
|
||
### 📊 Опросы
|
||
|
||
| Достижение | Emoji | Описание |
|
||
|------------|-------|----------|
|
||
| **Участник опроса** | 📊 | Участие в опросе |
|
||
|
||
---
|
||
|
||
### 📢 Объявления
|
||
|
||
| Достижение | Emoji | Описание |
|
||
|------------|-------|----------|
|
||
| **Объявитель** | 📢 | Публикация объявления |
|
||
|
||
---
|
||
|
||
### 🤝 Социальные
|
||
|
||
| Достижение | Emoji | Описание |
|
||
|------------|-------|----------|
|
||
| **Помощник** | 🤝 | Получил благодарность |
|
||
|
||
---
|
||
|
||
### 🔒 Безопасность
|
||
|
||
| Достижение | Emoji | Описание |
|
||
|------------|-------|----------|
|
||
| **Охотник на шпионов** | 🕵️ | Сообщение о подозрительном поведении |
|
||
|
||
---
|
||
|
||
### 📅 Серии
|
||
|
||
| Достижение | Emoji | Описание |
|
||
|------------|-------|----------|
|
||
| **Недельный воин** | 📅 | Активность 7 дней подряд |
|
||
| **Месячный мастер** | 🗓️ | Активность 30 дней подряд |
|
||
|
||
---
|
||
|
||
## 📱 Команды
|
||
|
||
### Для всех:
|
||
|
||
| Команда | Описание | Пример |
|
||
|---------|----------|--------|
|
||
| `/achievements` | Показать свои достижения | `/achievements` |
|
||
|
||
### Для админов:
|
||
|
||
| Команда | Описание | Пример |
|
||
|---------|----------|--------|
|
||
| `/achievements_top` | Топ по достижениям | `/achievements_top` |
|
||
| `/all_achievements` | Все доступные достижения | `/all_achievements` |
|
||
| `/user_achievements <ID>` | Достижения пользователя | `/user_achievements 123456789` |
|
||
|
||
---
|
||
|
||
## 🎯 Сценарии использования
|
||
|
||
### Сценарий 1: Первое сообщение
|
||
|
||
**Пользователь пишет первое сообщение:**
|
||
|
||
**Бот:**
|
||
```
|
||
🏆 Новое достижение!
|
||
|
||
🌱 Новичок
|
||
|
||
Первое сообщение в чате
|
||
|
||
Продолжайте в том же духе!
|
||
```
|
||
|
||
---
|
||
|
||
### Сценарий 2: Просмотр своих достижений
|
||
|
||
**Пользователь:**
|
||
```
|
||
/achievements
|
||
```
|
||
|
||
**Бот:**
|
||
```
|
||
🏆 Ваши достижения
|
||
|
||
Всего: 5
|
||
|
||
📝 Активность
|
||
🌱 Новичок
|
||
📝 Активист 10
|
||
✍️ Активист 100
|
||
|
||
⭐ Рейтинг
|
||
🏠 Сосед
|
||
⭐ Активист
|
||
|
||
⏰ Время
|
||
🦉 Сова
|
||
```
|
||
|
||
---
|
||
|
||
### Сценарий 3: Топ по достижениям
|
||
|
||
**Админ:**
|
||
```
|
||
/achievements_top
|
||
```
|
||
|
||
**Бот:**
|
||
```
|
||
🏆 Топ по достижениям
|
||
|
||
🥇 Иван Иванов (кв. 45) — 12 достиж.
|
||
🥈 Петр Петров (кв. 88) — 10 достиж.
|
||
🥉 Анна Сидорова (кв. 12) — 8 достиж.
|
||
4. Мария Козлова (кв. 100) — 6 достиж.
|
||
5. Василий Смирнов (кв. 50) — 5 достиж.
|
||
```
|
||
|
||
---
|
||
|
||
### Сценарий 4: Все достижения
|
||
|
||
**Админ:**
|
||
```
|
||
/all_achievements
|
||
```
|
||
|
||
**Бот:**
|
||
```
|
||
🏆 Все достижения
|
||
|
||
Всего: 16
|
||
|
||
📝 Активность
|
||
🌱 Новичок
|
||
└─ Первое сообщение в чате
|
||
📝 Активист 10
|
||
└─ 10 сообщений в чате
|
||
...
|
||
|
||
⭐ Рейтинг
|
||
🏠 Сосед
|
||
└─ Рейтинг 100 баллов
|
||
...
|
||
```
|
||
|
||
---
|
||
|
||
## 🗄️ База данных
|
||
|
||
### Таблица `achievements`:
|
||
```sql
|
||
CREATE TABLE achievements (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
user_id BIGINT NOT NULL,
|
||
achievement_type TEXT NOT NULL,
|
||
earned_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
metadata TEXT, -- JSON с доп. данными
|
||
FOREIGN KEY (user_id) REFERENCES users(user_id)
|
||
)
|
||
```
|
||
|
||
### Индексы:
|
||
- `ix_achievements_user` — по пользователю
|
||
- `ix_achievements_type` — по типу достижения
|
||
|
||
---
|
||
|
||
## 🧪 Тестирование
|
||
|
||
### Чек-лист проверки:
|
||
|
||
#### 1. Авто-выдача достижений
|
||
```bash
|
||
# Отправить несколько сообщений
|
||
# Проверить что пришли уведомления
|
||
```
|
||
- [ ] Новичок (1 сообщение)
|
||
- [ ] Активист 10 (10 сообщений)
|
||
- [ ] Жаворонок/Сова (по времени)
|
||
|
||
#### 2. Просмотр достижений
|
||
```bash
|
||
/achievements
|
||
```
|
||
- [ ] Достижения отображаются
|
||
- [ ] Группировка по категориям
|
||
- [ ] Emoji правильные
|
||
|
||
#### 3. Топ по достижениям
|
||
```bash
|
||
/achievements_top
|
||
```
|
||
- [ ] Топ отображается
|
||
- [ ] Медали у первых трёх
|
||
- [ ] Количество верное
|
||
|
||
#### 4. Все достижения
|
||
```bash
|
||
/all_achievements
|
||
```
|
||
- [ ] Все 16 достижений показаны
|
||
- [ ] Описания верные
|
||
- [ ] Группировка по категориям
|
||
|
||
---
|
||
|
||
## 📁 Изменённые файлы
|
||
|
||
| Файл | Изменения |
|
||
|------|-----------|
|
||
| `database/models.py` | Модель Achievement |
|
||
| `database/migrate_add_achievements.py` | Миграция БД |
|
||
| `services/achievements.py` | Сервис достижений |
|
||
| `handlers/achievements.py` | Хендлеры |
|
||
| `handlers/chat_monitor.py` | Авто-проверка достижений |
|
||
| `handlers/__init__.py` | Импорт achievements_router |
|
||
| `main.py` | Регистрация achievements_router |
|
||
|
||
---
|
||
|
||
## 🚀 Как использовать
|
||
|
||
### Для жильца:
|
||
|
||
1. **Посмотреть свои достижения:**
|
||
```
|
||
/achievements
|
||
```
|
||
|
||
2. **Получать достижения автоматически:**
|
||
- Пишите сообщения в чат
|
||
- Пройдите верификацию
|
||
- Набирайте рейтинг
|
||
- Участвуйте в опросах
|
||
- Публикуйте объявления
|
||
|
||
---
|
||
|
||
## 💡 Советы
|
||
|
||
### Как получить все достижения:
|
||
|
||
1. **Активность:**
|
||
- Пишите сообщения регулярно
|
||
- Достигните 1000 сообщений
|
||
|
||
2. **Рейтинг:**
|
||
- Будьте активны ( +1 за сообщение)
|
||
- Достигните 1000 баллов
|
||
|
||
3. **Время:**
|
||
- Напишите утром (6-7) — Жаворонок
|
||
- Напишите ночью (после 23) — Сова
|
||
|
||
4. **Социальные:**
|
||
- Помогайте соседям
|
||
- Получите благодарность
|
||
|
||
---
|
||
|
||
## 🔧 Отладка
|
||
|
||
### Посмотреть достижения в БД:
|
||
```bash
|
||
cd /home/matrixhasyou/domovoy_bot
|
||
source venv/bin/activate
|
||
sqlite3 database/domovoy.db
|
||
|
||
SELECT user_id, achievement_type, earned_at
|
||
FROM achievements
|
||
ORDER BY earned_at DESC
|
||
LIMIT 20;
|
||
```
|
||
|
||
### Логи:
|
||
```bash
|
||
tail -f logs/bot.log | grep -i "достижен\|achievement"
|
||
```
|
||
|
||
---
|
||
|
||
## ✅ Преимущества
|
||
|
||
| Было | Стало |
|
||
|------|-------|
|
||
| Нет мотивации | **Достижения** |
|
||
| Нет геймификации | **16 достижений** |
|
||
| Нет топа | **Топ по достижениям** |
|
||
| Скучный чат | **Интересно участвовать** |
|
||
|
||
---
|
||
|
||
**Достижения готовы! 🏆**
|
||
|
||
*Следующий шаг: тестирование и фиксация версии v1.12*
|