136 lines
3.4 KiB
Markdown
136 lines
3.4 KiB
Markdown
# Карта Суп Telegram Bot
|
||
|
||
Telegram бот для проверки баланса и истории транзакций карты Карта Суп.
|
||
|
||
## Возможности
|
||
|
||
- 💳 Сохранение кода карты для каждого пользователя
|
||
- ✍️ Ввод кода карты (13 цифр, начинается с 2001)
|
||
- 💰 Проверка баланса карты
|
||
- 📊 Просмотр последних транзакций
|
||
- 🔄 Изменение кода карты
|
||
- 📱 Удобное меню с кнопками
|
||
- 🛡️ Защита от спама (rate limiting)
|
||
- ✅ Валидация кода карты
|
||
|
||
## Технологии
|
||
|
||
- NestJS
|
||
- TypeScript
|
||
- Telegraf (Telegram Bot API)
|
||
- TypeORM
|
||
- PostgreSQL
|
||
- Docker
|
||
|
||
## Установка и запуск
|
||
|
||
### Локальная разработка
|
||
|
||
1. Установите зависимости:
|
||
```bash
|
||
npm install
|
||
```
|
||
|
||
2. Создайте файл `.env` на основе `.env.example`:
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
|
||
3. Заполните переменные окружения в `.env`:
|
||
```env
|
||
TELEGRAM_BOT_TOKEN=your_bot_token_here
|
||
DATABASE_HOST=localhost
|
||
DATABASE_PORT=5432
|
||
DATABASE_USER=postgres
|
||
DATABASE_PASSWORD=postgres
|
||
DATABASE_NAME=karta_soup
|
||
NODE_ENV=development
|
||
```
|
||
|
||
4. Запустите PostgreSQL (или используйте Docker):
|
||
```bash
|
||
docker run -d \
|
||
--name postgres \
|
||
-e POSTGRES_PASSWORD=postgres \
|
||
-e POSTGRES_DB=karta_soup \
|
||
-p 5432:5432 \
|
||
postgres:15-alpine
|
||
```
|
||
|
||
5. Запустите приложение:
|
||
```bash
|
||
npm run start:dev
|
||
```
|
||
|
||
### Запуск с Docker
|
||
|
||
1. Создайте файл `.env`:
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
|
||
2. Укажите токен бота в `.env`:
|
||
```env
|
||
TELEGRAM_BOT_TOKEN=your_bot_token_here
|
||
```
|
||
|
||
3. Запустите контейнеры:
|
||
```bash
|
||
docker-compose up -d
|
||
```
|
||
|
||
4. Проверьте логи:
|
||
```bash
|
||
docker-compose logs -f app
|
||
```
|
||
|
||
### Деплой на сервер
|
||
|
||
1. Скопируйте проект на сервер:
|
||
```bash
|
||
scp -r . user@your-server:/path/to/app
|
||
```
|
||
|
||
2. На сервере создайте `.env` файл с вашими настройками
|
||
|
||
3. Запустите:
|
||
```bash
|
||
docker-compose up -d
|
||
```
|
||
|
||
## Команды бота
|
||
|
||
- `/start` - Начать работу с ботом
|
||
- `/balance` - Проверить баланс
|
||
- `/changecode` - Изменить код карты
|
||
- `/help` - Показать справку
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
src/
|
||
├── bot/
|
||
│ ├── bot.module.ts # Модуль бота
|
||
│ └── bot.update.ts # Обработчики команд и сообщений
|
||
├── entities/
|
||
│ └── user.entity.ts # Сущность пользователя
|
||
├── interfaces/
|
||
│ └── balance.interface.ts # Интерфейсы для API
|
||
├── services/
|
||
│ ├── karta-soup.service.ts # Сервис для работы с API Карта Суп
|
||
│ └── user.service.ts # Сервис для работы с пользователями
|
||
├── app.module.ts # Главный модуль приложения
|
||
└── main.ts # Точка входа
|
||
```
|
||
|
||
## API Карта Суп
|
||
|
||
Бот использует публичный API для получения информации о балансе:
|
||
```
|
||
GET https://meal.gift-cards.ru/api/1/cards/{code}?limit=100
|
||
```
|
||
|
||
## Лицензия
|
||
|
||
MIT
|