4.0 KiB
4.0 KiB
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)
Показывает поиск по целям знакомства.
Тестирование
Добавить премиум пользователю:
UPDATE users SET premium = true, premium_expires_at = NOW() + INTERVAL '30 days'
WHERE telegram_id = 'YOUR_TELEGRAM_ID';
Убрать премиум:
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 функции проверяют премиум статус
- Автоматическое удаление истёкшего премиум
- Валидация всех входных данных
- Проверка существования пользователей перед операциями