# 🙏 Система благодарностей — v1.13 **Версия:** v1.13 **Дата:** 27 февраля 2026 г. **Статус:** ✅ Реализовано --- ## 📋 Описание Система благодарностей позволяет жильцам благодарить друг друга за помощь. Получатель благодарности получает +10 к рейтингу и достижение "Помощник" (если первое). --- ## 🎯 Возможности - ✅ Отправка благодарностей по @username или ID - ✅ Ограничение: 1 благодарность в день одному пользователю - ✅ +10 к рейтингу получателю - ✅ Достижение "Помощник" при первой благодарности - ✅ Топ пользователей по благодарностям - ✅ История благодарностей - ✅ Статистика полученных/отправленных --- ## 📱 Команды ### Для всех: | Команда | Описание | Пример | |---------|----------|--------| | `/thank @username` | Поблагодарить пользователя | `/thank @ivanov` | | `/thank ` | Поблагодарить по 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*