mart litle update

This commit is contained in:
NW 2025-03-06 16:13:11 +00:00
parent 0c10772261
commit 2f3459b670
3 changed files with 180 additions and 74 deletions

155
README.md
View File

@ -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. **Покупки и товары**
- **Продукты**: Пользователи могут выбирать товары по категориям, проверять наличие средств и совершать покупки.
- **Профиль**: В разделе профиля можно изменять локацию, а также удалять аккаунт.
- **История покупок**: Пользователи могут отслеживать свои покупки с описанием товаров и статусов.
- **Кошельки**: Возможность добавлять новые криптокошельки, пополнять их через QR-коды и просматривать историю транзакций.
```
├── src/
│ ├── config/ # Конфигурация приложения
│ ├── context/ # Контекст и состояния бота
│ ├── 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, с возможностью работы с криптовалютами и традиционными средствами. Проект ориентирован на пользователей, которые ценят удобство, безопасность и скорость совершения покупок. Для администраторов — это мощный инструмент для управления товаром, пользователями и финансовыми потоками магазина.

View File

@ -8,17 +8,19 @@ services:
container_name: telegram_shop_prod
restart: always
environment:
- BOT_TOKEN=7626758249:AAEdcbXJpW1VsnJJtc8kZ5VBsYMFR242wgk
- ADMIN_IDS=732563549,390431690,217546867
- SUPPORT_LINK=https://t.me/neroworm
- CATALOG_PATH=./catalog
- COMMISSION_ENABLED=true
- COMMISSION_PERCENT=5
- COMMISSION_WALLET_BTC=bc1qyourbtcaddress
- COMMISSION_WALLET_LTC=ltc1qyourltcaddress
- COMMISSION_WALLET_USDT=0x654dbef74cae96f19aa03e1b0abf569b111572cc
- COMMISSION_WALLET_USDC=0xYourUsdcAddress
- COMMISSION_WALLET_ETH=0xYourEthAddress
- WG_ENABLED=false # Включение/выключение WireGuard (true/false)
- BOT_TOKEN=7626758249:AAEdcbXJpW1VsnJJtc8kZ5VBsYMFR242wgk # Токен Telegram бота
- ADMIN_IDS=732563549,390431690,217546867 # ID администраторов через запятую
- SUPPORT_LINK=https://t.me/neroworm # Ссылка на поддержку
- CATALOG_PATH=./catalog # Путь к каталогу товаров
- COMMISSION_ENABLED=true # Включение комиссии (true/false)
- COMMISSION_PERCENT=5 # Процент комиссии
# Кошельки для комиссий:
- COMMISSION_WALLET_BTC=bc1qyourbtcaddress # Bitcoin
- COMMISSION_WALLET_LTC=ltc1qyourltcaddress # Litecoin
- COMMISSION_WALLET_USDT=0x654dbef74cae96f19aa03e1b0abf569b111572cc # USDT (ERC-20)
- COMMISSION_WALLET_USDC=0xYourUsdcAddress # USDC (ERC-20)
- COMMISSION_WALLET_ETH=0xYourEthAddress # Ethereum
volumes:
- ./db:/app/db/ # Синхронизация базы данных
- ./src:/app/src/ # Синхронизация исходного кода
@ -34,4 +36,4 @@ services:
- net.ipv4.conf.all.src_valid_mark=1 # Необходимо для маршрутизации
privileged: true # Даем контейнеру повышенные привилегии
networks:
default:
default:

View File

@ -44,6 +44,16 @@ print_result() {
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
print_stage "Checking /etc/resolv.conf"
if [ ! -f /etc/resolv.conf ]; then
@ -112,36 +122,45 @@ else
fi
fi
# Запуск WireGuard
print_stage "Starting WireGuard"
wg-quick up wg0 2>&1 | tee /tmp/wg.log
wg_status=$?
if [ $wg_status -eq 0 ]; then
echo "║ WireGuard started successfully."
print_result "WireGuard interface activated successfully."
# Проверка включения WireGuard
print_stage "Checking WireGuard status"
if [ "$WG_ENABLED" = "true" ]; then
echo "║ WireGuard is enabled. Starting..."
# Запуск WireGuard
wg-quick up wg0 2>&1 | tee /tmp/wg.log
wg_status=$?
if [ $wg_status -eq 0 ]; then
echo "║ WireGuard started successfully."
print_result "WireGuard interface activated successfully."
else
echo "║ WireGuard failed to start. Logs:"
cat /tmp/wg.log | sed 's/^/║ /'
print_result "Failed to start WireGuard interface!"
exit 1
fi
# Проверка маршрутизации после запуска WireGuard
print_stage "Routing table AFTER WireGuard"
ip route | sed 's/^/║ /'
print_separator
# Проверка сети ПОСЛЕ включения WireGuard
print_stage "Testing connectivity AFTER WireGuard"
echo "║ Pinging 1.1.1.1..."
ping -c 4 1.1.1.1 > /tmp/ping.log 2>&1
if [ $? -eq 0 ]; then
echo "║ Ping successful."
cat /tmp/ping.log | sed 's/^/║ /'
else
echo "║ Ping failed."
fi
print_separator
else
echo "║ WireGuard failed to start. Logs:"
cat /tmp/wg.log | sed 's/^/║ /'
print_result "Failed to start WireGuard interface!"
exit 1
echo "║ WireGuard is disabled. Skipping..."
print_result "WireGuard is disabled in configuration."
fi
# Проверка маршрутизации после запуска WireGuard
print_stage "Routing table AFTER WireGuard"
ip route | sed 's/^/║ /'
print_separator
# Проверка сети ПОСЛЕ включения WireGuard
print_stage "Testing connectivity AFTER WireGuard"
echo "║ Pinging 1.1.1.1..."
ping -c 4 1.1.1.1 > /tmp/ping.log 2>&1
if [ $? -eq 0 ]; then
echo "║ Ping successful."
cat /tmp/ping.log | sed 's/^/║ /'
else
echo "║ Ping failed."
fi
print_separator
# Проверка DNS
print_stage "Testing DNS"