Files
tg_tinder_bot/docs/VIP_FUNCTIONS.md
2025-09-18 08:31:14 +09:00

106 lines
4.0 KiB
Markdown
Raw Permalink 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.

# VIP Функции - Документация
## Обзор
Реализованы VIP функции с проверкой премиум статуса пользователя в базе данных.
## База данных
### Новые поля в таблице users:
- `premium` (BOOLEAN) - флаг премиум статуса
- `premium_expires_at` (TIMESTAMP) - дата окончания премиум
## Логика работы
### 1. Кнопка "VIP Поиск"
- **Если premium = false**: показывает информацию о премиум и предложение купить
- **Если premium = true**: открывает VIP поиск с фильтрами
### 2. VIP Поиск включает:
#### Быстрый VIP поиск
- Только пользователи с фото
- Только онлайн пользователи
#### Расширенный поиск
- Фильтр по возрасту
- Фильтр по городу
- Фильтр по целям знакомства
- Фильтр по хобби
- Фильтр по образу жизни
#### Поиск по целям знакомства
- Серьезные отношения
- Общение и дружба
- Развлечения
- Деловые знакомства
#### Поиск по хобби
- Фильтрация по массиву хобби в профиле
## Файлы
### Новые файлы:
- `src/services/vipService.ts` - сервис для работы с VIP функциями
- `src/controllers/vipController.ts` - контроллер VIP поиска
- `src/database/migrations/add_premium_field.sql` - миграция для premium полей
### Изменённые файлы:
- `src/handlers/callbackHandlers.ts` - добавлены VIP обработчики
## Методы VipService
### checkPremiumStatus(telegramId: string)
Проверяет премиум статус пользователя, автоматически убирает истёкший премиум.
### addPremium(telegramId: string, durationDays: number)
Добавляет премиум статус на указанное количество дней.
### vipSearch(telegramId: string, filters: VipSearchFilters)
Выполняет VIP поиск с фильтрами (только для премиум пользователей).
### getPremiumFeatures()
Возвращает описание премиум возможностей.
## Методы VipController
### showVipSearch(chatId, telegramId)
Основной метод - показывает VIP поиск или информацию о премиум.
### performQuickVipSearch(chatId, telegramId)
Быстрый VIP поиск (фото + онлайн).
### showDatingGoalSearch(chatId, telegramId)
Показывает поиск по целям знакомства.
## Тестирование
### Добавить премиум пользователю:
```sql
UPDATE users SET premium = true, premium_expires_at = NOW() + INTERVAL '30 days'
WHERE telegram_id = 'YOUR_TELEGRAM_ID';
```
### Убрать премиум:
```sql
UPDATE users SET premium = false, premium_expires_at = NULL
WHERE telegram_id = 'YOUR_TELEGRAM_ID';
```
## Callback данные
- `get_vip` / `vip_search` - показать VIP поиск
- `vip_quick_search` - быстрый VIP поиск
- `vip_advanced_search` - расширенный поиск
- `vip_dating_goal_search` - поиск по целям
- `vip_goal_{goal}` - поиск по конкретной цели
- `vip_like_{telegramId}` - VIP лайк
- `vip_superlike_{telegramId}` - VIP супер-лайк
- `vip_dislike_{telegramId}` - VIP дизлайк
## Безопасность
- Все VIP функции проверяют премиум статус
- Автоматическое удаление истёкшего премиум
- Валидация всех входных данных
- Проверка существования пользователей перед операциями