|
All checks were successful
Deploy Production / deploy (push) Successful in 23s
|
||
|---|---|---|
| .gitea/workflows | ||
| src | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| Dockerfile | ||
| nest-cli.json | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
Карта Суп Telegram Bot
Telegram бот для проверки баланса и истории транзакций карты Карта Суп.
Возможности
- 💳 Сохранение кода карты для каждого пользователя
- ✍️ Ввод кода карты (13 цифр, начинается с 2001)
- 💰 Проверка баланса карты
- 📊 Просмотр последних транзакций
- 🔄 Изменение кода карты
- 📱 Удобное меню с кнопками
- 🛡️ Защита от спама (rate limiting)
- ✅ Валидация кода карты
Технологии
- NestJS
- TypeScript
- Telegraf (Telegram Bot API)
- TypeORM
- PostgreSQL
- Docker
Установка и запуск
Локальная разработка
- Установите зависимости:
npm install
- Создайте файл
.envна основе.env.example:
cp .env.example .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
- Запустите PostgreSQL (или используйте Docker):
docker run -d \
--name postgres \
-e POSTGRES_PASSWORD=postgres \
-e POSTGRES_DB=karta_soup \
-p 5432:5432 \
postgres:15-alpine
- Запустите приложение:
npm run start:dev
Запуск с Docker
- Создайте файл
.env:
cp .env.example .env
- Укажите токен бота в
.env:
TELEGRAM_BOT_TOKEN=your_bot_token_here
- Запустите контейнеры:
docker-compose up -d
- Проверьте логи:
docker-compose logs -f app
Деплой на сервер
- Скопируйте проект на сервер:
scp -r . user@your-server:/path/to/app
-
На сервере создайте
.envфайл с вашими настройками -
Запустите:
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