✅ Регистрация и верификация жильцов ✅ Рейтинг активности (уровни) ✅ Детект шпионов (Score 0-100) ✅ Анти-мат система (3 предупреждения → бан) ✅ Админ-панель с рассылкой ✅ Учёт квартир (несколько жильцов) ✅ Телефоны экстренных служб и мастеров ✅ Еженедельный экспорт JSON ✅ Прокси (socks5) для обхода РКН Бекап: backups/versions/v1.0_mvp_2026-02-26/ Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
314 lines
8.5 KiB
Markdown
314 lines
8.5 KiB
Markdown
# 🙏 Система благодарностей — v1.13
|
||
|
||
**Версия:** v1.13
|
||
**Дата:** 27 февраля 2026 г.
|
||
**Статус:** ✅ Реализовано
|
||
|
||
---
|
||
|
||
## 📋 Описание
|
||
|
||
Система благодарностей позволяет жильцам благодарить друг друга за помощь. Получатель благодарности получает +10 к рейтингу и достижение "Помощник" (если первое).
|
||
|
||
---
|
||
|
||
## 🎯 Возможности
|
||
|
||
- ✅ Отправка благодарностей по @username или ID
|
||
- ✅ Ограничение: 1 благодарность в день одному пользователю
|
||
- ✅ +10 к рейтингу получателю
|
||
- ✅ Достижение "Помощник" при первой благодарности
|
||
- ✅ Топ пользователей по благодарностям
|
||
- ✅ История благодарностей
|
||
- ✅ Статистика полученных/отправленных
|
||
|
||
---
|
||
|
||
## 📱 Команды
|
||
|
||
### Для всех:
|
||
|
||
| Команда | Описание | Пример |
|
||
|---------|----------|--------|
|
||
| `/thank @username` | Поблагодарить пользователя | `/thank @ivanov` |
|
||
| `/thank <user_id>` | Поблагодарить по ID | `/thank 123456789` |
|
||
| `/my_thanks` | Мои благодарности | `/my_thanks` |
|
||
| `/thanks_top` | Топ по благодарностям | `/thanks_top` |
|
||
| `/thanks_history` | История благодарностей | `/thanks_history` |
|
||
|
||
---
|
||
|
||
## 🎯 Сценарии использования
|
||
|
||
### Сценарий 1: Отправка благодарности
|
||
|
||
**Пользователь:**
|
||
```
|
||
/thank @ivanov
|
||
```
|
||
|
||
**Бот:**
|
||
```
|
||
🙏 Благодарность для Иван Иванов
|
||
|
||
Отправьте текст благодарности (необязательно) или "пропустить":
|
||
```
|
||
|
||
**Пользователь:**
|
||
```
|
||
Спасибо за помощь с сантехником!
|
||
```
|
||
|
||
**Бот (отправителю):**
|
||
```
|
||
✅ Благодарность отправлена!
|
||
|
||
Получатель: Иван Иванов
|
||
Сообщение: Спасибо за помощь с сантехником!
|
||
```
|
||
|
||
**Бот (получателю в личку):**
|
||
```
|
||
🙏 Вам благодарность!
|
||
|
||
От: Петр Петров
|
||
Сообщение: Спасибо за помощь с сантехником!
|
||
|
||
+10 к рейтингу!
|
||
```
|
||
|
||
**Если первая благодарность — ещё и достижение:**
|
||
```
|
||
🏆 Новое достижение!
|
||
|
||
🤝 Помощник
|
||
|
||
Получил благодарность от соседа
|
||
|
||
Продолжайте помогать!
|
||
```
|
||
|
||
---
|
||
|
||
### Сценарий 2: Ответ на сообщение
|
||
|
||
**Пользователь отвечает на сообщение командой:**
|
||
```
|
||
/thank
|
||
```
|
||
|
||
**Бот:**
|
||
```
|
||
🙏 Благодарность для [имя отвечаемого]
|
||
|
||
Отправьте текст благодарности или "пропустить":
|
||
```
|
||
|
||
---
|
||
|
||
### Сценарий 3: Повторная благодарность
|
||
|
||
**Пользователь пытается поблагодарить второй раз за день:**
|
||
|
||
**Бот:**
|
||
```
|
||
⚠️ Вы уже благодарили этого пользователя сегодня!
|
||
Можно поблагодарить только один раз в день.
|
||
```
|
||
|
||
---
|
||
|
||
### Сценарий 4: Мои благодарности
|
||
|
||
**Пользователь:**
|
||
```
|
||
/my_thanks
|
||
```
|
||
|
||
**Бот:**
|
||
```
|
||
🙏 Ваши благодарности
|
||
|
||
✅ Получено: 5
|
||
📤 Отправлено: 3
|
||
|
||
Последние полученные:
|
||
• От user123: Спасибо за консультацию!
|
||
• От user456: Спасибо!
|
||
• От user789: Очень помог!
|
||
```
|
||
|
||
---
|
||
|
||
### Сценарий 5: Топ по благодарностям
|
||
|
||
**Пользователь:**
|
||
```
|
||
/thanks_top
|
||
```
|
||
|
||
**Бот:**
|
||
```
|
||
🙏 Топ по благодарностям
|
||
|
||
🥇 Иван Иванов (кв. 45) — 15 благодар.
|
||
🥈 Петр Петров (кв. 88) — 12 благодар.
|
||
🥉 Анна Сидорова (кв. 12) — 10 благодар.
|
||
4. Мария Козлова (кв. 100) — 8 благодар.
|
||
5. Василий Смирнов (кв. 50) — 6 благодар.
|
||
```
|
||
|
||
---
|
||
|
||
## 🗄️ База данных
|
||
|
||
### Таблица `thanks`:
|
||
```sql
|
||
CREATE TABLE thanks (
|
||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||
from_user_id BIGINT NOT NULL, -- Кто поблагодарил
|
||
to_user_id BIGINT NOT NULL, -- Кого поблагодарили
|
||
message TEXT, -- Текст благодарности
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
FOREIGN KEY (from_user_id) REFERENCES users(user_id),
|
||
FOREIGN KEY (to_user_id) REFERENCES users(user_id)
|
||
)
|
||
```
|
||
|
||
### Индексы:
|
||
- `ix_thanks_from` — по отправителю
|
||
- `ix_thanks_to` — по получателю
|
||
- `ix_thanks_created` — по времени
|
||
|
||
---
|
||
|
||
## 🧪 Тестирование
|
||
|
||
### Чек-лист проверки:
|
||
|
||
#### 1. Отправка благодарности
|
||
```bash
|
||
/thank @username
|
||
# Отправить текст
|
||
```
|
||
- [ ] Благодарность сохранена
|
||
- [ ] Получатель уведомлён
|
||
- [ ] +10 к рейтингу начислено
|
||
|
||
#### 2. Первая благодарность
|
||
```bash
|
||
# Получить первую благодарность
|
||
```
|
||
- [ ] Достижение "Помощник" выдано
|
||
- [ ] Уведомление о достижении пришло
|
||
|
||
#### 3. Повторная благодарность
|
||
```bash
|
||
# Попытаться поблагодарить второй раз за день
|
||
```
|
||
- [ ] Бот блокирует повторную благодарность
|
||
|
||
#### 4: Мои благодарности
|
||
```bash
|
||
/my_thanks
|
||
```
|
||
- [ ] Статистика отображается
|
||
- [ ] Последние полученные показаны
|
||
|
||
#### 5: Топ
|
||
```bash
|
||
/thanks_top
|
||
```
|
||
- [ ] Топ отображается
|
||
- [ ] Медали у первых трёх
|
||
|
||
---
|
||
|
||
## 📁 Изменённые файлы
|
||
|
||
| Файл | Изменения |
|
||
|------|-----------|
|
||
| `database/models.py` | Модель Thank |
|
||
| `database/migrate_add_thanks.py` | Миграция БД |
|
||
| `services/thanks.py` | Сервис благодарностей |
|
||
| `services/achievements.py` | Достижение "Помощник" |
|
||
| `handlers/thanks.py` | Хендлеры благодарностей |
|
||
| `handlers/__init__.py` | Импорт thanks_router |
|
||
| `main.py` | Регистрация thanks_router |
|
||
|
||
---
|
||
|
||
## 🚀 Как использовать
|
||
|
||
### Для жильца:
|
||
|
||
1. **Поблагодарить:**
|
||
```
|
||
/thank @ivanov
|
||
```
|
||
|
||
2. **Посмотреть свои благодарности:**
|
||
```
|
||
/my_thanks
|
||
```
|
||
|
||
3. **Посмотреть топ:**
|
||
```
|
||
/thanks_top
|
||
```
|
||
|
||
---
|
||
|
||
## 💡 Советы
|
||
|
||
### Ограничения:
|
||
|
||
- **1 благодарность в день** — одному пользователю
|
||
- **Нельзя себе** — нельзя поблагодарить самого себя
|
||
- **+10 к рейтингу** — за каждую благодарность
|
||
|
||
### Когда благодарить:
|
||
|
||
- ✅ Сосед помог с ремонтом
|
||
- ✅ Подсказали по вопросам ЖКХ
|
||
- ✅ Помогли с доставкой
|
||
- ✅ Поделились контактами мастеров
|
||
- ✅ Любая другая помощь
|
||
|
||
---
|
||
|
||
## 🔧 Отладка
|
||
|
||
### Посмотреть благодарности в БД:
|
||
```bash
|
||
cd /home/matrixhasyou/domovoy_bot
|
||
source venv/bin/activate
|
||
sqlite3 database/domovoy.db
|
||
|
||
SELECT from_user_id, to_user_id, message, created_at
|
||
FROM thanks
|
||
ORDER BY created_at DESC
|
||
LIMIT 20;
|
||
```
|
||
|
||
### Логи:
|
||
```bash
|
||
tail -f logs/bot.log | grep -i "благодар\|thank"
|
||
```
|
||
|
||
---
|
||
|
||
## ✅ Преимущества
|
||
|
||
| Было | Стало |
|
||
|------|-------|
|
||
| Нет способа сказать спасибо | **Система благодарностей** |
|
||
| Нет мотивации помогать | **+10 к рейтингу** |
|
||
| Нет признания | **Достижение "Помощник"** |
|
||
| Не видно кто помогает | **Топ по благодарностям** |
|
||
|
||
---
|
||
|
||
**Система благодарностей готова! 🙏**
|
||
|
||
*Следующий шаг: тестирование и фиксация версии v1.13*
|