mass refactor

This commit is contained in:
2025-09-18 08:31:14 +09:00
parent 856bf3ca2a
commit bdd7d0424f
58 changed files with 3009 additions and 291 deletions

181
README.md
View File

@@ -2,6 +2,71 @@
Полнофункциональный Telegram бот для знакомств в стиле Tinder с инлайн-кнопками и красивым интерфейсом. Пользователи могут создавать профили, просматривать анкеты других пользователей, ставить лайки, получать матчи и общаться друг с другом.
## 🗂️ Структура проекта
```
telegram-tinder-bot/
├── bin/ # Исполняемые скрипты и утилиты
│ ├── start_bot.bat # Скрипт запуска для Windows
│ ├── install_ubuntu.sh # Скрипт установки для Ubuntu
│ ├── update.sh # Скрипт обновления для Linux/macOS
│ ├── update.bat # Скрипт обновления для Windows
│ └── setup.sh # Скрипт настройки окружения
├── docs/ # Документация проекта
│ ├── ARCHITECTURE.md # Архитектура приложения
│ ├── DEPLOYMENT.md # Инструкции по развертыванию
│ ├── DEPLOY_UBUNTU.md # Инструкции по развертыванию на Ubuntu
│ ├── LOCALIZATION.md # Информация о локализации
│ ├── NATIVE_CHAT_SYSTEM.md # Документация по системе чата
│ ├── PROJECT_SUMMARY.md # Общее описание проекта
│ └── VIP_FUNCTIONS.md # Описание премиум функций
├── migrations/ # Миграции базы данных
│ ├── 1758144488937_initial-schema.js # Начальная схема БД
│ └── 1758144618548_add-missing-profile-columns.js # Дополнительные колонки
├── scripts/ # Вспомогательные скрипты
│ ├── add-hobbies-column.js # Скрипт добавления колонки hobbies
│ ├── add-premium-columns.js # Скрипт добавления премиум колонок
│ ├── add-premium-columns.ts # TypeScript версия скрипта
│ ├── create_profile_fix.js # Исправление профилей
│ └── migrate-sync.js # Синхронизация миграций
├── sql/ # SQL скрипты
│ ├── add_looking_for.sql # Добавление колонки looking_for
│ ├── add_missing_columns.sql # Добавление недостающих колонок
│ ├── add_premium_columns.sql # Добавление премиум колонок
│ ├── add_updated_at.sql # Добавление колонки updated_at
│ ├── clear_database.sql # Очистка базы данных
│ └── recreate_tables.sql # Пересоздание таблиц
├── src/ # Исходный код приложения
│ ├── bot.ts # Основной файл бота
│ ├── controllers/ # Контроллеры
│ ├── database/ # Функции для работы с БД
│ ├── handlers/ # Обработчики сообщений и команд
│ ├── locales/ # Локализация
│ ├── models/ # Модели данных
│ ├── scripts/ # Скрипты для запуска
│ │ └── initDb.ts # Инициализация базы данных
│ ├── services/ # Сервисы и бизнес-логика
│ ├── types/ # TypeScript типы
│ └── utils/ # Утилиты и вспомогательные функции
├── tests/ # Тесты
│ └── test-bot.ts # Тестовая версия бота
├── .dockerignore # Игнорируемые Docker файлы
├── .env # Переменные окружения (локальные)
├── .env.example # Пример файла переменных окружения
├── database.json # Конфигурация базы данных
├── docker-compose.yml # Настройка Docker Compose
├── Dockerfile # Docker-образ приложения
├── package.json # Зависимости и скрипты NPM
└── tsconfig.json # Настройки TypeScript
```
## ✨ Функционал
### 🎯 Основные возможности
@@ -74,82 +139,84 @@
[💬 Написать] [👤 Профиль] [🔍 Продолжить поиск]
```
## 🗂️ Структура проекта
```
telegram-tinder-bot/
├── src/
│ ├── bot.ts # Основной файл бота
│ ├── handlers/ # Обработчики событий
│ │ ├── commandHandlers.ts # Команды (/start, /profile, etc.)
│ │ ├── callbackHandlers.ts # Инлайн-кнопки (лайки, просмотр)
│ │ └── messageHandlers.ts # Текстовые сообщения
│ ├── services/ # Бизнес-логика
│ │ ├── profileService.ts # Управление профилями
│ │ ├── matchingService.ts # Алгоритм совпадений
│ │ └── notificationService.ts # Уведомления
│ ├── models/ # Модели данных
│ │ ├── User.ts # Пользователь Telegram
│ │ ├── Profile.ts # Профиль знакомств
│ │ ├── Swipe.ts # Лайки/дислайки
│ │ └── Match.ts # Совпадения
│ └── database/ # База данных
│ ├── connection.ts # Подключение к PostgreSQL
│ └── migrations/init.sql # Создание таблиц
├── config/ # Конфигурация
│ └── default.json # Настройки по умолчанию
├── docker-compose.yml # Docker Compose
├── Dockerfile # Docker контейнер
└── package.json # Зависимости npm
```
## 🚀 Развертывание
## 🚀 Быстрый старт
### 📦 Docker (Рекомендуется)
### 1. Предварительные требования
- Node.js 16+
- PostgreSQL 12+
- Telegram Bot Token (получить у [@BotFather](https://t.me/BotFather))
### 2. Установка
```bash
# Клонировать репозиторий
git clone <repository-url>
cd telegram-tinder-bot
# Настроить переменные окружения
cp .env.example .env
# Отредактируйте .env файл
# Запустить с Docker Compose
docker-compose up -d
# Применить миграции БД
docker-compose exec app npm run db:migrate
```
### 🖥️ Обычная установка
```bash
# Установить зависимости
npm install
# Создать базу данных
createdb telegram_tinder_bot
psql -d telegram_tinder_bot -f src/database/migrations/init.sql
# Запустить бота
# Скомпилировать TypeScript
npm run build
npm start
```
### ☁️ Продакшен
### 3. Настройка базы данных
```bash
# Установить PM2
npm install -g pm2
# Создать базу данных PostgreSQL
createdb telegram_tinder_bot
# Запустить через PM2
pm2 start ecosystem.config.js
# Инициализация базы данных
npm run init:db
```
# Мониторинг
pm2 monit
pm2 logs telegram-tinder-bot
### 4. Запуск бота
```bash
# Запуск на Windows
.\bin\start_bot.bat
# Запуск на Linux/macOS
npm run start
```
## <20> Развертывание на Ubuntu
Для развертывания на Ubuntu 24.04 используйте скрипт установки:
```bash
# Сделать скрипт исполняемым
chmod +x ./bin/install_ubuntu.sh
# Запустить установку
sudo ./bin/install_ubuntu.sh
```
Подробные инструкции по развертыванию на Ubuntu находятся в [docs/DEPLOY_UBUNTU.md](docs/DEPLOY_UBUNTU.md).
## 🔄 Обновление бота
### На Windows:
```bash
# Обновление с ветки main
npm run update:win
# Обновление с определенной ветки
.\bin\update.bat develop
```
### На Linux/macOS:
```bash
# Обновление с ветки main
npm run update
# Обновление с определенной ветки и перезапуском сервиса
./bin/update.sh develop --restart-service
```
## 🔧 Настройка переменных окружения