8.6 KiB
8.6 KiB
Telegram Tinder Bot - Архитектура и Технические Детали
🏗️ Архитектура Проекта
Структура Директорий
telegram-tinder-bot/
├── src/
│ ├── bot.ts # Основной файл бота
│ ├── controllers/ # Контроллеры для бизнес-логики
│ │ ├── matchController.ts
│ │ ├── profileController.ts
│ │ └── swipeController.ts
│ ├── database/ # Работа с базой данных
│ │ ├── connection.ts
│ │ └── migrations/init.sql
│ ├── handlers/ # Обработчики событий Telegram
│ │ ├── callbackHandlers.ts
│ │ ├── commandHandlers.ts
│ │ └── messageHandlers.ts
│ ├── models/ # Модели данных
│ │ ├── Match.ts
│ │ ├── Profile.ts
│ │ ├── Swipe.ts
│ │ └── User.ts
│ ├── services/ # Бизнес-логика
│ │ ├── matchingService.ts
│ │ ├── notificationService.ts
│ │ └── profileService.ts
│ ├── types/ # TypeScript типы
│ │ └── index.ts
│ └── utils/ # Вспомогательные функции
│ ├── helpers.ts
│ └── validation.ts
├── config/ # Конфигурация
├── logs/ # Логи приложения
├── uploads/ # Загруженные файлы
└── dist/ # Скомпилированные JS файлы
Технологический Стек
Backend:
- Node.js 18+
- TypeScript 5.3.2
- node-telegram-bot-api 0.64.0
- PostgreSQL 15 с расширением UUID
- pg (PostgreSQL driver)
Архитектурные Паттерны:
- Service-Oriented Architecture (SOA)
- Model-View-Controller (MVC)
- Dependency Injection
- Repository Pattern для работы с данными
DevOps:
- Docker & Docker Compose
- PM2 для управления процессами
- ESLint + Prettier для качества кода
- Автоматическая компиляция TypeScript
🚀 Основные Возможности
1. Система Регистрации
- Многошаговая регистрация через диалог с ботом
- Валидация данных на каждом этапе
- Загрузка фотографий с проверкой формата
- Геолокация для поиска ближайших пользователей
2. Алгоритм Matching
- Интеллектуальный подбор на основе:
- Возраста и гендерных предпочтений
- Географической близости
- Общих интересов
- Исключение уже просмотренных профилей
3. Система Swipe
- Left Swipe (Pass) - пропустить
- Right Swipe (Like) - понравился
- Super Like - супер лайк (премиум)
- Автоматическое создание матчей при взаимном лайке
4. Чат Система
- Обмен сообщениями между матчами
- Поддержка медиа: фото, стикеры, GIF
- Статус прочтения сообщений
- Уведомления о новых сообщениях
5. Модерация и Безопасность
- Система жалоб на неподходящие профили
- Блокировка пользователей
- Антиспам защита
- Верификация профилей
🗄️ Схема Базы Данных
Основные Таблицы
users - Пользователи Telegram
- id (UUID, PK)
- telegram_id (BIGINT, UNIQUE)
- username, first_name, last_name
- language_code, is_premium, is_blocked
- created_at, updated_at
profiles - Профили для знакомств
- id (UUID, PK)
- user_id (UUID, FK -> users.id)
- name, age, gender, looking_for
- bio, location, latitude, longitude
- photos[], interests[]
- education, occupation, height
- smoking, drinking, relationship_type
- verification_status, is_active, is_visible
swipes - История свайпов
- id (UUID, PK)
- swiper_id (UUID, FK -> users.id)
- swiped_id (UUID, FK -> users.id)
- direction ('left'|'right'|'super')
- created_at
matches - Пары пользователей
- id (UUID, PK)
- user1_id, user2_id (UUID, FK -> users.id)
- status ('active'|'blocked'|'unmatched')
- matched_at, last_message_at
messages - Сообщения в чате
- id (UUID, PK)
- match_id (UUID, FK -> matches.id)
- sender_id (UUID, FK -> users.id)
- content, message_type, file_id
- is_read, created_at
Автоматические Триггеры
- Автоматическое создание матчей при взаимном лайке
- Обновление времени последнего сообщения
- Автоинкремент счетчиков непрочитанных сообщений
🛠️ API и Интеграции
Telegram Bot API
- Webhooks для продакшена
- Polling для разработки
- Inline клавиатуры для навигации
- Callback queries для интерактивности
Внешние Сервисы (Опционально)
- Google Maps API - для геокодирования
- Cloudinary - для хранения изображений
- Redis - для кэширования сессий
🔒 Безопасность
Защита Данных
- Хеширование чувствительных данных
- SQL Injection защита через параметризованные запросы
- Rate Limiting для предотвращения спама
- Валидация всех входных данных
Приватность
- GDPR совместимость
- Возможность удаления всех данных
- Ограниченная видимость профилей
- Контроль доступа к персональной информации
📊 Мониторинг и Логирование
Система Логов
- Error Logs: Критические ошибки
- Access Logs: Все запросы к боту
- Performance Logs: Метрики производительности
- User Activity: Статистика активности
Метрики
- DAU/MAU - активные пользователи
- Match Rate - процент матчей
- Message Volume - объем сообщений
- Conversion Funnel - воронка регистрации
🚀 Развертывание
Локальная Разработка
npm install
npm run dev
Продакшен с Docker
docker-compose up -d
Масштабирование
- Horizontal Scaling: Несколько инстансов бота
- Database Sharding: Разделение пользователей по регионам
- CDN: Для быстрой загрузки изображений
- Load Balancer: Распределение нагрузки
🔮 Планы Развития
Ближайшие Улучшения
- Video Calls через Telegram
- Stories как в Instagram
- Premium подписка с расширенными возможностями
- AI рекомендации на основе поведения
- Группы по интересам
Технические Улучшения
- GraphQL API для фронтенда
- Machine Learning для улучшения матчинга
- Real-time notifications через WebSockets
- Multi-language support
- A/B тестирование фич
Этот проект представляет собой полноценную платформу знакомств внутри Telegram с современной архитектурой и возможностями для масштабирования.