Files
tg_tinder_bot/VIP_FUNCTIONS.md

4.0 KiB
Raw Blame History

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 функции проверяют премиум статус
  • Автоматическое удаление истёкшего премиум
  • Валидация всех входных данных
  • Проверка существования пользователей перед операциями