mart litle update
This commit is contained in:
155
README.md
155
README.md
@@ -1,53 +1,139 @@
|
|||||||
**Универсальный Телеграмм Магазин**
|
# Универсальный Телеграмм Магазин
|
||||||
|
|
||||||
**Описание проекта**:
|
**Описание проекта**:
|
||||||
"Универсальный Телеграмм Магазин" — это телеграмм-бот, предназначенный для организации и управления онлайн-продажами товаров и услуг через популярную платформу Telegram. Магазин включает функционал как для пользователей, так и для администраторов, обеспечивая удобное взаимодействие с товарами, балансами, кошельками и покупками.
|
"Универсальный Телеграмм Магазин" — это телеграмм-бот для организации онлайн-продаж через Telegram. Проект предоставляет полный цикл управления магазином, включая работу с криптовалютами, управление товарами и пользователями, а также интеграцию с VPN через WireGuard для безопасных транзакций.
|
||||||
|
|
||||||
|
**Основные технологии**:
|
||||||
|
- Node.js + Telegraf для работы с Telegram API
|
||||||
|
- SQLite для хранения данных
|
||||||
|
- Docker для контейнеризации
|
||||||
|
- WireGuard для защищенных соединений
|
||||||
|
- Поддержка криптокошельков (Bitcoin, Ethereum, Litecoin)
|
||||||
|
|
||||||
Проект включает несколько ключевых разделов для удобной работы пользователей и администраторов, а также позволяет интегрировать систему криптокошельков для расчетов, управления товарами и отслеживания покупок.
|
Проект включает несколько ключевых разделов для удобной работы пользователей и администраторов, а также позволяет интегрировать систему криптокошельков для расчетов, управления товарами и отслеживания покупок.
|
||||||
|
|
||||||
### Цели проекта:
|
### Основной функционал
|
||||||
- Создание удобного и универсального интерфейса для покупок через Telegram.
|
|
||||||
- Обеспечение безопасности и простоты транзакций с использованием криптовалют и традиционных средств.
|
#### Для пользователей:
|
||||||
- Внедрение эффективной системы управления для администраторов, с возможностью мониторинга пользователей, товаров, кошельков и комиссий.
|
- Просмотр товаров по категориям с фильтрацией по локациям
|
||||||
- Реализация системы профилей с возможностью редактирования, управления балансами и удаления аккаунтов.
|
- Совершение покупок с использованием криптовалют
|
||||||
|
- Управление криптокошельками (создание, пополнение, просмотр баланса)
|
||||||
|
- Просмотр истории транзакций и покупок
|
||||||
|
- Настройка профиля (локация, контактные данные)
|
||||||
|
- Подключение к защищенному VPN через WireGuard для безопасных транзакций
|
||||||
|
|
||||||
|
#### Для администраторов:
|
||||||
|
- Полное управление товарами и категориями
|
||||||
|
- Управление пользователями (блокировка, редактирование балансов)
|
||||||
|
- Контроль транзакций и комиссий
|
||||||
|
- Создание дампов базы данных с автоматическим списанием комиссии (% от балансов кошельков)
|
||||||
|
- Управление локациями и настройками VPN
|
||||||
|
- Мониторинг активности пользователей
|
||||||
|
- SaaS система с автоматическим расчетом комиссий:
|
||||||
|
- Комиссия за оборот по магазину перед выгрузкой кошельков
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Структура проекта:
|
### Установка и запуск
|
||||||
|
|
||||||
#### 1. **Пользовательский раздел**
|
#### Требования:
|
||||||
Пользователи могут:
|
- Node.js 18+
|
||||||
- Просматривать и покупать товары, управлять своим балансом.
|
- Docker и Docker Compose
|
||||||
- Следить за историей покупок.
|
- Telegram Bot Token
|
||||||
- Пополнять свои криптокошельки.
|
- SQLite connection string
|
||||||
- Управлять своим профилем, изменяя локацию и удаляя аккаунт.
|
- WireGuard конфигурация
|
||||||
|
|
||||||
#### 2. **Административный раздел**
|
#### 1. Установка зависимостей:
|
||||||
Администраторы могут:
|
```bash
|
||||||
- Управлять пользователями: блокировать, удалять и редактировать балансы.
|
npm install
|
||||||
- Управлять товарами: добавлять, редактировать, удалять товары и категории.
|
```
|
||||||
- Управлять кошельками: контролировать пополнения и комиссионные платежи.
|
|
||||||
- Создавать дампы для переноса базы данных магазина.
|
#### 2. Настройка конфигурации:
|
||||||
|
Создайте файл `.env` в корне проекта со следующим содержимым:
|
||||||
|
```env
|
||||||
|
TELEGRAM_BOT_TOKEN=your_bot_token
|
||||||
|
MONGO_URI=mongodb://localhost:27017/telegram_shop
|
||||||
|
WIREGUARD_CONFIG_PATH=./wg/config/wg0.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. Запуск через Docker:
|
||||||
|
```bash
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4. Настройка WireGuard:
|
||||||
|
1. Сгенерируйте ключи:
|
||||||
|
```bash
|
||||||
|
wg genkey | tee privatekey | wg pubkey > publickey
|
||||||
|
```
|
||||||
|
2. Настройте wg0.conf:
|
||||||
|
```ini
|
||||||
|
[Interface]
|
||||||
|
PrivateKey = <your_private_key>
|
||||||
|
Address = 10.0.0.1/24
|
||||||
|
ListenPort = 51820
|
||||||
|
|
||||||
|
[Peer]
|
||||||
|
PublicKey = <client_public_key>
|
||||||
|
AllowedIPs = 10.0.0.2/32
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 5. Запуск бота:
|
||||||
|
```bash
|
||||||
|
npm start
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Основной функционал:
|
### Структура проекта
|
||||||
|
|
||||||
#### 1. **Покупки и товары**
|
```
|
||||||
- **Продукты**: Пользователи могут выбирать товары по категориям, проверять наличие средств и совершать покупки.
|
├── src/
|
||||||
- **Профиль**: В разделе профиля можно изменять локацию, а также удалять аккаунт.
|
│ ├── config/ # Конфигурация приложения
|
||||||
- **История покупок**: Пользователи могут отслеживать свои покупки с описанием товаров и статусов.
|
│ ├── context/ # Контекст и состояния бота
|
||||||
- **Кошельки**: Возможность добавлять новые криптокошельки, пополнять их через QR-коды и просматривать историю транзакций.
|
│ ├── handlers/ # Обработчики команд
|
||||||
|
│ ├── models/ # Модели данных
|
||||||
|
│ ├── services/ # Бизнес-логика
|
||||||
|
│ ├── utils/ # Вспомогательные утилиты
|
||||||
|
│ └── index.js # Точка входа
|
||||||
|
├── wg/ # Конфигурация WireGuard
|
||||||
|
├── docker-compose.yml # Docker конфигурация
|
||||||
|
└── Dockerfile # Docker образ
|
||||||
|
```
|
||||||
|
|
||||||
#### 2. **Администрирование**
|
---
|
||||||
- **Управление пользователями**: Администратор может просматривать информацию о пользователях, управлять их балансами, блокировать или удалять аккаунты.
|
|
||||||
- **Управление товарами**: Добавление новых товаров, редактирование существующих и управление их категориями.
|
|
||||||
- **Создание дампов**: Администратор может создать дамп магазина, чтобы перенести данные на другой сервер или сохранить их для архивации.
|
|
||||||
|
|
||||||
#### 3. **Работа с криптовалютами**
|
### Разработка
|
||||||
- Поддержка различных типов криптокошельков (биткойн, эфириум, лайткоин и другие).
|
|
||||||
- Проверка баланса кошельков через общедоступные API.
|
#### Запуск в режиме разработки:
|
||||||
- Управление комиссионными, которые необходимы для загрузки дампа магазина.
|
```bash
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Линтинг и форматирование:
|
||||||
|
```bash
|
||||||
|
npm run lint
|
||||||
|
npm run format
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Тестирование:
|
||||||
|
```bash
|
||||||
|
npm test
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Лицензия
|
||||||
|
|
||||||
|
Проект распространяется под лицензией MIT. Подробнее см. в файле LICENSE.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Контакты
|
||||||
|
|
||||||
|
По вопросам сотрудничества и поддержки:
|
||||||
|
- Email: support@telegram-shop.com
|
||||||
|
- Telegram: @telegram_shop_support
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -87,4 +173,3 @@
|
|||||||
|
|
||||||
### Заключение:
|
### Заключение:
|
||||||
**Универсальный Телеграмм Магазин** предоставляет эффективное решение для организации торговых процессов в Telegram, с возможностью работы с криптовалютами и традиционными средствами. Проект ориентирован на пользователей, которые ценят удобство, безопасность и скорость совершения покупок. Для администраторов — это мощный инструмент для управления товаром, пользователями и финансовыми потоками магазина.
|
**Универсальный Телеграмм Магазин** предоставляет эффективное решение для организации торговых процессов в Telegram, с возможностью работы с криптовалютами и традиционными средствами. Проект ориентирован на пользователей, которые ценят удобство, безопасность и скорость совершения покупок. Для администраторов — это мощный инструмент для управления товаром, пользователями и финансовыми потоками магазина.
|
||||||
|
|
||||||
|
|||||||
@@ -8,17 +8,19 @@ services:
|
|||||||
container_name: telegram_shop_prod
|
container_name: telegram_shop_prod
|
||||||
restart: always
|
restart: always
|
||||||
environment:
|
environment:
|
||||||
- BOT_TOKEN=7626758249:AAEdcbXJpW1VsnJJtc8kZ5VBsYMFR242wgk
|
- WG_ENABLED=false # Включение/выключение WireGuard (true/false)
|
||||||
- ADMIN_IDS=732563549,390431690,217546867
|
- BOT_TOKEN=7626758249:AAEdcbXJpW1VsnJJtc8kZ5VBsYMFR242wgk # Токен Telegram бота
|
||||||
- SUPPORT_LINK=https://t.me/neroworm
|
- ADMIN_IDS=732563549,390431690,217546867 # ID администраторов через запятую
|
||||||
- CATALOG_PATH=./catalog
|
- SUPPORT_LINK=https://t.me/neroworm # Ссылка на поддержку
|
||||||
- COMMISSION_ENABLED=true
|
- CATALOG_PATH=./catalog # Путь к каталогу товаров
|
||||||
- COMMISSION_PERCENT=5
|
- COMMISSION_ENABLED=true # Включение комиссии (true/false)
|
||||||
- COMMISSION_WALLET_BTC=bc1qyourbtcaddress
|
- COMMISSION_PERCENT=5 # Процент комиссии
|
||||||
- COMMISSION_WALLET_LTC=ltc1qyourltcaddress
|
# Кошельки для комиссий:
|
||||||
- COMMISSION_WALLET_USDT=0x654dbef74cae96f19aa03e1b0abf569b111572cc
|
- COMMISSION_WALLET_BTC=bc1qyourbtcaddress # Bitcoin
|
||||||
- COMMISSION_WALLET_USDC=0xYourUsdcAddress
|
- COMMISSION_WALLET_LTC=ltc1qyourltcaddress # Litecoin
|
||||||
- COMMISSION_WALLET_ETH=0xYourEthAddress
|
- COMMISSION_WALLET_USDT=0x654dbef74cae96f19aa03e1b0abf569b111572cc # USDT (ERC-20)
|
||||||
|
- COMMISSION_WALLET_USDC=0xYourUsdcAddress # USDC (ERC-20)
|
||||||
|
- COMMISSION_WALLET_ETH=0xYourEthAddress # Ethereum
|
||||||
volumes:
|
volumes:
|
||||||
- ./db:/app/db/ # Синхронизация базы данных
|
- ./db:/app/db/ # Синхронизация базы данных
|
||||||
- ./src:/app/src/ # Синхронизация исходного кода
|
- ./src:/app/src/ # Синхронизация исходного кода
|
||||||
|
|||||||
55
wg/start.sh
55
wg/start.sh
@@ -44,6 +44,16 @@ print_result() {
|
|||||||
print_separator
|
print_separator
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Проверка включения WireGuard
|
||||||
|
if [ "$WG_ENABLED" = "false" ]; then
|
||||||
|
print_stage "WireGuard is disabled"
|
||||||
|
print_result "Skipping WireGuard setup"
|
||||||
|
print_stage "Starting application"
|
||||||
|
echo "║ Application is starting..."
|
||||||
|
exec node src/index.js
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
# Проверка наличия /etc/resolv.conf
|
# Проверка наличия /etc/resolv.conf
|
||||||
print_stage "Checking /etc/resolv.conf"
|
print_stage "Checking /etc/resolv.conf"
|
||||||
if [ ! -f /etc/resolv.conf ]; then
|
if [ ! -f /etc/resolv.conf ]; then
|
||||||
@@ -112,36 +122,45 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Запуск WireGuard
|
# Проверка включения WireGuard
|
||||||
print_stage "Starting WireGuard"
|
print_stage "Checking WireGuard status"
|
||||||
wg-quick up wg0 2>&1 | tee /tmp/wg.log
|
if [ "$WG_ENABLED" = "true" ]; then
|
||||||
wg_status=$?
|
echo "║ WireGuard is enabled. Starting..."
|
||||||
if [ $wg_status -eq 0 ]; then
|
|
||||||
|
# Запуск WireGuard
|
||||||
|
wg-quick up wg0 2>&1 | tee /tmp/wg.log
|
||||||
|
wg_status=$?
|
||||||
|
if [ $wg_status -eq 0 ]; then
|
||||||
echo "║ WireGuard started successfully."
|
echo "║ WireGuard started successfully."
|
||||||
print_result "WireGuard interface activated successfully."
|
print_result "WireGuard interface activated successfully."
|
||||||
else
|
else
|
||||||
echo "║ WireGuard failed to start. Logs:"
|
echo "║ WireGuard failed to start. Logs:"
|
||||||
cat /tmp/wg.log | sed 's/^/║ /'
|
cat /tmp/wg.log | sed 's/^/║ /'
|
||||||
print_result "Failed to start WireGuard interface!"
|
print_result "Failed to start WireGuard interface!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Проверка маршрутизации после запуска WireGuard
|
# Проверка маршрутизации после запуска WireGuard
|
||||||
print_stage "Routing table AFTER WireGuard"
|
print_stage "Routing table AFTER WireGuard"
|
||||||
ip route | sed 's/^/║ /'
|
ip route | sed 's/^/║ /'
|
||||||
print_separator
|
print_separator
|
||||||
|
|
||||||
# Проверка сети ПОСЛЕ включения WireGuard
|
# Проверка сети ПОСЛЕ включения WireGuard
|
||||||
print_stage "Testing connectivity AFTER WireGuard"
|
print_stage "Testing connectivity AFTER WireGuard"
|
||||||
echo "║ Pinging 1.1.1.1..."
|
echo "║ Pinging 1.1.1.1..."
|
||||||
ping -c 4 1.1.1.1 > /tmp/ping.log 2>&1
|
ping -c 4 1.1.1.1 > /tmp/ping.log 2>&1
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
echo "║ Ping successful."
|
echo "║ Ping successful."
|
||||||
cat /tmp/ping.log | sed 's/^/║ /'
|
cat /tmp/ping.log | sed 's/^/║ /'
|
||||||
else
|
else
|
||||||
echo "║ Ping failed."
|
echo "║ Ping failed."
|
||||||
|
fi
|
||||||
|
print_separator
|
||||||
|
else
|
||||||
|
echo "║ WireGuard is disabled. Skipping..."
|
||||||
|
print_result "WireGuard is disabled in configuration."
|
||||||
fi
|
fi
|
||||||
print_separator
|
|
||||||
|
|
||||||
# Проверка DNS
|
# Проверка DNS
|
||||||
print_stage "Testing DNS"
|
print_stage "Testing DNS"
|
||||||
|
|||||||
Reference in New Issue
Block a user