✅ Регистрация и верификация жильцов ✅ Рейтинг активности (уровни) ✅ Детект шпионов (Score 0-100) ✅ Анти-мат система (3 предупреждения → бан) ✅ Админ-панель с рассылкой ✅ Учёт квартир (несколько жильцов) ✅ Телефоны экстренных служб и мастеров ✅ Еженедельный экспорт JSON ✅ Прокси (socks5) для обхода РКН Бекап: backups/versions/v1.0_mvp_2026-02-26/ Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
9.4 KiB
9.4 KiB
🏆 Достижения жильцов — 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:
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. Авто-выдача достижений
# Отправить несколько сообщений
# Проверить что пришли уведомления
- Новичок (1 сообщение)
- Активист 10 (10 сообщений)
- Жаворонок/Сова (по времени)
2. Просмотр достижений
/achievements
- Достижения отображаются
- Группировка по категориям
- Emoji правильные
3. Топ по достижениям
/achievements_top
- Топ отображается
- Медали у первых трёх
- Количество верное
4. Все достижения
/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 |
🚀 Как использовать
Для жильца:
-
Посмотреть свои достижения:
/achievements -
Получать достижения автоматически:
- Пишите сообщения в чат
- Пройдите верификацию
- Набирайте рейтинг
- Участвуйте в опросах
- Публикуйте объявления
💡 Советы
Как получить все достижения:
-
Активность:
- Пишите сообщения регулярно
- Достигните 1000 сообщений
-
Рейтинг:
- Будьте активны ( +1 за сообщение)
- Достигните 1000 баллов
-
Время:
- Напишите утром (6-7) — Жаворонок
- Напишите ночью (после 23) — Сова
-
Социальные:
- Помогайте соседям
- Получите благодарность
🔧 Отладка
Посмотреть достижения в БД:
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;
Логи:
tail -f logs/bot.log | grep -i "достижен\|achievement"
✅ Преимущества
| Было | Стало |
|---|---|
| Нет мотивации | Достижения |
| Нет геймификации | 16 достижений |
| Нет топа | Топ по достижениям |
| Скучный чат | Интересно участвовать |
Достижения готовы! 🏆
Следующий шаг: тестирование и фиксация версии v1.12