diff --git a/README.md b/README.md
index 83efdc4..2025950 100644
--- a/README.md
+++ b/README.md
@@ -1,245 +1,183 @@
+# Telegram-бот для продажи подписок Remnawave
-# Remnawave Subscription Sales Telegram Bot
+Этот Telegram-бот предназначен для автоматизации продажи и управления подписками для панели **Remnawave**. Он интегрируется с API Remnawave для управления пользователями и подписками, а также использует различные платежные системы для приема платежей.
-This Telegram bot is designed to automate the sale and management of subscriptions for a **Remnawave panel**. It integrates with the Remnawave API for user and subscription management and uses YooKassa for processing payments.
+## ✨ Ключевые возможности
-## ✨ Features
+### Для пользователей:
+- **Регистрация и выбор языка:** Поддержка русского и английского языков.
+- **Просмотр подписки:** Пользователи могут видеть статус своей подписки, дату окончания и ссылку на конфигурацию.
+- **Пробная подписка:** Система пробных подписок для новых пользователей (активируется вручную по кнопке).
+- **Промокоды:** Возможность применять промокоды для получения скидок или бонусных дней.
+- **Реферальная программа:** Пользователи могут приглашать друзей и получать за это бонусные дни подписки.
+- **Оплата:** Поддержка оплаты через YooKassa, CryptoPay, Telegram Stars и Tribute.
-* **User Interaction:**
- * User registration with language selection (English/Russian).
- * Display of main menu with available actions via inline keyboards.
- * Ability for users to view their current subscription status, expiration date, and configuration link.
- * Trial subscription system for new users (configurable, manual activation via button).
- * Promo code system for users to apply discounts or bonuses.
- * Referral program for users to earn bonus subscription days.
-* **Subscription Management:**
- * Handles subscription purchases for various periods (1, 3, 6, 12 months).
- * Integrates with **YooKassa** for payment processing, including fiscal receipt data.
- * Supports **Crypto Pay** for payments with fiat currency (RUB by default).
- * Automatic subscription activation/extension upon successful payment.
- * Link and syncs users with a **Remnawave panel** account, primarily matching by Telegram ID.
- * Updates user status, expiration dates, traffic limits, and internal squads on the Remnawave panel.
-* **Admin Panel:**
- * Protected by `ADMIN_IDS` (supports multiple administrators).
- * **Statistics:** View bot usage (total users, banned, active subscriptions), recent payments, and panel sync status.
- * **User Management:**
- * Ban/Unban users by Telegram ID or @username (updates local DB and panel).
- * View a paginated list of banned users.
- * View a "user card" with detailed information and unban option.
- * **Broadcast:** Send messages to all users, users with active subscriptions, or users with expired subscriptions.
- * **Promo Codes:** Create and view promo codes (bonus days, activation limits, validity).
- * **Panel Sync:** Manually trigger synchronization of users and subscriptions from the Remnawave panel to the bot's database, matching by Telegram ID.
- * **Activity Logs:** View a paginated list of all user actions (messages, commands, callbacks) or logs for a specific user.
-* **Notifications:**
- * Automated daily notifications to users about expiring subscriptions (via APScheduler).
- * Notifications to users and inviters upon successful referral bonus application.
- * Notifications to admin(s) about suspicious promo code input attempts.
-* **Security & Technical:**
- * Uses parameterized queries to prevent SQL injection.
- * Proactive check for suspicious input in promo code field (notifies admin).
- * Middleware for checking banned users on every interaction.
- * Middleware for logging user actions.
- * Webhook support for Telegram and YooKassa for efficient updates.
- * Configurable via `.env` file.
- * Dockerized for easy deployment.
+### Для администраторов:
+- **Защищенная админ-панель:** Доступ только для администраторов, указанных в `ADMIN_IDS`.
+- **Статистика:** Просмотр статистики использования бота (общее количество пользователей, забаненные, активные подписки), недавние платежи и статус синхронизации с панелью.
+- **Управление пользователями:** Блокировка/разблокировка пользователей, просмотр списка забаненных и детальной информации о пользователе.
+- **Рассылка:** Отправка сообщений всем пользователям, пользователям с активной или истекшей подпиской.
+- **Управление промокодами:** Создание и просмотр промокодов.
+- **Синхронизация с панелью:** Ручной запуск синхронизации пользователей и подписок с панелью Remnawave.
+- **Логи действий:** Просмотр логов всех действий пользователей.
-## 🚀 Technologies Used
+## 🚀 Технологии
-* **Python 3.11**
-* **Aiogram 3.x:** Asynchronous Telegram Bot Framework
-* **aiohttp:** For running the webhook server
-* **sqlalchemy:** Asynchronous PostgreSQL database interaction
-* **YooKassa SDK:** For payment processing
-* **APScheduler:** For scheduled tasks (e.g., notifications)
-* **Pydantic:** For settings management (loading from `.env`)
-* **Docker & Docker Compose:** For containerization and deployment
+- **Python 3.11**
+- **Aiogram 3.x:** Асинхронный фреймворк для Telegram ботов.
+- **aiohttp:** Для запуска веб-сервера (вебхуки).
+- **SQLAlchemy 2.x & asyncpg:** Асинхронная работа с базой данных PostgreSQL.
+- **YooKassa, aiocryptopay:** SDK для интеграции с платежными системами.
+- **APScheduler:** Для выполнения отложенных задач (например, уведомления об окончании подписки).
+- **Pydantic:** Для управления настройками из `.env` файла.
+- **Docker & Docker Compose:** Для контейнеризации и развертывания.
-## ⚙️ Setup and Configuration
+## ⚙️ Установка и запуск
-### Prerequisites
+### Предварительные требования
-* Docker and Docker Compose installed.
-* A running instance of a Remnawave panel.
-* A Telegram Bot Token.
-* A YooKassa Shop ID and Secret Key.
+- Установленные Docker и Docker Compose.
+- Рабочая панель Remnawave.
+- Токен Telegram-бота.
+- Данные для подключения к платежным системам (YooKassa, CryptoPay и т.д.).
-### Configuration Steps
+### Шаги установки
-1. **Clone the Repository:**
+1. **Клонируйте репозиторий:**
```bash
git clone https://github.com/machka-pasla/remnawave-tg-shop
cd remnawave-tg-shop
```
-2. **Create an `.env` File:**
- Copy the `env.example` file to `.env` and fill in your specific values:
+2. **Создайте и настройте файл `.env`:**
+ Скопируйте `env.example` в `.env` и заполните своими данными.
```bash
cp .env.example .env
nano .env
```
- Key variables to configure in `.env`:
- * `BOT_TOKEN`: Your Telegram Bot Token from BotFather.
- * `ADMIN_IDS`: Comma-separated list of your Telegram User IDs for admin access (e.g., `12345678,98765432`). **Crucial for bot management.**
- * `DEFAULT_LANGUAGE`: Default language for new users (e.g., `ru` or `en`).
- * `DEFAULT_CURRENCY_SYMBOL`: e.g., `RUB`, `USD`.
- * `SUPPORT_LINK`: (Optional) URL for a support chat/contact (e.g., `https://t.me/your_support`).
- * `SERVER_STATUS_URL`: (Optional) URL to a server status page (e.g., Uptime Kuma).
- * `SUBSCRIPTION_MINI_APP_URL`: (Optional) URL of the Telegram mini app for viewing subscription details. If set, the "My Subscription" button will open this mini app and the bot will register it automatically via API.
- * `START_COMMAND_DESCRIPTION`: (Optional) Description for the `/start` command shown in the bot's menu.
- * **YooKassa Settings:**
- * `YOOKASSA_SHOP_ID`: Your shop ID from YooKassa.
- * `YOOKASSA_SECRET_KEY`: Your secret key from YooKassa.
- * `WEBHOOK_BASE_URL`: Base URL for all webhooks (Telegram, YooKassa, Crypto Pay). Example: `https://webhooks.yourdomain.com`.
- * `YOOKASSA_RETURN_URL`: (Optional) URL user is redirected to after payment, often `https://t.me/your_bot_username`.
- * `YOOKASSA_DEFAULT_RECEIPT_EMAIL`: **Important for 54-FZ (Russian fiscalization).** A default email for sending fiscal receipts.
- * `YOOKASSA_VAT_CODE`: VAT code for items in receipt (e.g., `1` for "No VAT". Consult YooKassa documentation and tax advisor).
- * `YOOKASSA_PAYMENT_MODE`: e.g., `full_prepayment`.
- * `YOOKASSA_PAYMENT_SUBJECT`: e.g., `service`.
-* **Crypto Pay Settings:** `CRYPTOPAY_TOKEN`, `CRYPTOPAY_NETWORK` (`mainnet` or `testnet`), `CRYPTOPAY_CURRENCY_TYPE` (`fiat` or `crypto`), `CRYPTOPAY_ASSET` (e.g., `RUB`). Enable with `CRYPTOPAY_ENABLED`.
- * **Payment Method Toggles:** `YOOKASSA_ENABLED`, `STARS_ENABLED`, `TRIBUTE_ENABLED`, `CRYPTOPAY_ENABLED`.
- * **Subscription Options:** For each duration you can use variables like
- `1_MONTH_ENABLED`, `RUB_PRICE_1_MONTH`, `STARS_PRICE_1_MONTH`, `TRIBUTE_LINK_1_MONTH`
- (and corresponding variables for `3_MONTHS`, `6_MONTHS`, `12_MONTHS`).
- * **Panel API Settings:**
- * `PANEL_API_URL`: Full URL to your Remnawave panel's API (e.g., `http://remnawave:3000/api` or `https://panel.yourdomain.com/api`).
- * `PANEL_API_KEY`: API Key for authenticating with the Remnawave panel.
- * `PANEL_WEBHOOK_SECRET`: Secret key for verifying webhooks from the Remnawave panel.
- * `USER_SQUAD_UUIDS`: (Optional) Comma-separated list of internal squad UUIDs from your panel to assign to users during creation.
- * `USER_TRAFFIC_LIMIT_GB` and `USER_TRAFFIC_STRATEGY`: Default traffic limit in gigabytes (0 for unlimited) and the reset strategy applied when updating users on the panel.
- * `TRIAL_ENABLED`, `TRIAL_DURATION_DAYS`, `TRIAL_TRAFFIC_LIMIT_GB`: Settings for the trial period.
- * `WEB_SERVER_HOST`, `WEB_SERVER_PORT`: Host and port for the bot's internal webhook server.
- * `LOGS_PAGE_SIZE`: For admin panel log pagination.
+ Ниже перечислены ключевые переменные.
-3. **Locales:**
- * Translation files are in the `locales/` directory (`en.json`, `ru.json`). Ensure they are present and correctly formatted. `locales` mounting is optional.
+
+ Основные настройки
-4. **Run with Docker Compose:**
+ | Переменная | Описание | Пример |
+ | --- | --- | --- |
+ | `BOT_TOKEN` | **Обязательно.** Токен вашего Telegram-бота. | `1234567890:ABC-DEF1234ghIkl-zyx57W2v1u123ew11` |
+ | `ADMIN_IDS` | **Обязательно.** ID администраторов в Telegram через запятую. | `12345678,98765432` |
+ | `DEFAULT_LANGUAGE` | Язык по умолчанию для новых пользователей. | `ru` |
+ | `SUPPORT_LINK` | (Опционально) Ссылка на поддержку. | `https://t.me/your_support` |
+ | `SUBSCRIPTION_MINI_APP_URL` | (Опционально) URL Mini App для показа подписки. | `https://t.me/your_bot/app` |
+
+
+
+ Настройки платежей и вебхуков
+
+ | Переменная | Описание |
+ | --- | --- |
+ | `WEBHOOK_BASE_URL`| **Обязательно.** Базовый URL для вебхуков, например `https://your.domain.com`. |
+ | `WEB_SERVER_HOST` | Хост для веб-сервера. | `0.0.0.0` |
+ | `WEB_SERVER_PORT` | Порт для веб-сервера. | `8080` |
+ | `YOOKASSA_ENABLED` | Включить/выключить YooKassa (`true`/`false`). |
+ | `YOOKASSA_SHOP_ID` | ID вашего магазина в YooKassa. |
+ | `YOOKASSA_SECRET_KEY`| Секретный ключ магазина YooKassa. |
+ | `CRYPTOPAY_ENABLED` | Включить/выключить CryptoPay (`true`/`false`). |
+ | `CRYPTOPAY_TOKEN` | Токен из вашего CryptoPay App. |
+ | `STARS_ENABLED` | Включить/выключить Telegram Stars (`true`/`false`). |
+ | `TRIBUTE_ENABLED`| Включить/выключить Tribute (`true`/`false`). |
+
+
+
+ Настройки подписок
+
+ Для каждого периода (1, 3, 6, 12 месяцев) можно настроить доступность и цены:
+ - `1_MONTH_ENABLED`: `true` или `false`
+ - `RUB_PRICE_1_MONTH`: Цена в рублях
+ - `STARS_PRICE_1_MONTH`: Цена в Telegram Stars
+ - `TRIBUTE_LINK_1_MONTH`: Ссылка для оплаты через Tribute
+ Аналогичные переменные есть для `3_MONTHS`, `6_MONTHS`, `12_MONTHS`.
+
+
+
+ Настройки панели Remnawave
+
+ | Переменная | Описание |
+ | --- | --- |
+ | `PANEL_API_URL` | URL API вашей панели Remnawave. |
+ | `PANEL_API_KEY` | API ключ для доступа к панели. |
+ | `PANEL_WEBHOOK_SECRET`| Секретный ключ для проверки вебхуков от панели. |
+ | `USER_SQUAD_UUIDS` | ID отрядов для новых пользователей. |
+ | `USER_TRAFFIC_LIMIT_GB`| Лимит трафика в ГБ (0 - безлимит). |
+
+
+
+ Настройки пробного периода
+
+ | Переменная | Описание |
+ | --- | --- |
+ | `TRIAL_ENABLED` | Включить/выключить пробный период (`true`/`false`). |
+ | `TRIAL_DURATION_DAYS`| Длительность пробного периода в днях. |
+ | `TRIAL_TRAFFIC_LIMIT_GB`| Лимит трафика для пробного периода в ГБ. |
+
+
+3. **Запустите контейнеры:**
```bash
docker compose up -d
```
- This command will pull the Docker image (if it doesn't exist or if `Dockerfile` changed) and start the `remnawave-tg-shop` service in detached mode.
+ Эта команда скачает образ и запустит сервис в фоновом режиме.
-5. **Webhook Setup (Important if using webhooks):**
- * **Reverse Proxy (Nginx, Caddy, etc.):** You need a reverse proxy to handle incoming HTTPS traffic, manage SSL certificates (e.g., from Let's Encrypt), and forward requests to your bot's container.
- * Forward requests for `https://{WEBHOOK_BASE_URL_domain}/webhook/yookassa` to `http://remnawave-tg-shop:{WEB_SERVER_PORT}/webhook/yookassa` (where `remnawave-tg-shop` is the service name in `docker-compose.yml`).
- * Forward requests for `https://{WEBHOOK_BASE_URL_domain}/webhook/cryptopay` to `http://remnawave-tg-shop:{WEB_SERVER_PORT}/webhook/cryptopay`.
- * Forward requests for `https://{WEBHOOK_BASE_URL_domain}/webhook/tribute` to `http://remnawave-tg-shop:{WEB_SERVER_PORT}/webhook/tribute`.
- * If using Telegram webhooks, forward requests for `https://{WEBHOOK_BASE_URL_domain}/` to `http://remnawave-tg-shop:{WEB_SERVER_PORT}/`.
- * **Telegram Webhook Registration:** The bot attempts to set its Telegram webhook URL on startup if `WEBHOOK_BASE_URL` is configured in `.env`. Check the bot logs to confirm if this was successful. You can also manually check using the Telegram Bot API method `getWebhookInfo`.
+4. **Настройка вебхуков (Обязательно):**
+ Вебхуки являются **обязательным** компонентом для работы бота, так как они используются для получения уведомлений от платежных систем (YooKassa, CryptoPay, Tribute) и панели Remnawave.
-6. **Database:**
- * A PostgreSQL database will be created in the docker container. The schema is initialized automatically on the first run if the database doesn't exist.
+ Вам понадобится обратный прокси (например, Nginx) для обработки HTTPS-трафика и перенаправления запросов на контейнер с ботом.
-7. **Viewing Logs:**
+ **Пути для перенаправления:**
+ - `https://<ваш_домен>/webhook/yookassa` → `http://remnawave-tg-shop:/webhook/yookassa`
+ - `https://<ваш_домен>/webhook/cryptopay` → `http://remnawave-tg-shop:/webhook/cryptopay`
+ - `https://<ваш_домен>/webhook/tribute` → `http://remnawave-tg-shop:/webhook/tribute`
+ - `https://<ваш_домен>/webhook/panel` → `http://remnawave-tg-shop:/webhook/panel`
+ - **Для Telegram:** Бот автоматически установит вебхук, если в `.env` указан `WEBHOOK_BASE_URL`. Путь будет `https://<ваш_домен>/`.
+
+ Где `remnawave-tg-shop` — это имя сервиса из `docker-compose.yml`, а `` — порт, указанный в `.env`.
+
+5. **Просмотр логов:**
```bash
docker compose logs -f remnawave-tg-shop
```
-## 🐳 Docker Setup
+## 🐳 Docker
-### `Dockerfile`
+Файлы `Dockerfile` и `docker-compose.yml` уже настроены для сборки и запуска проекта. `docker-compose.yml` использует готовый образ с GitHub Container Registry, но вы можете раскомментировать `build: .` для локальной сборки.
-```dockerfile
-FROM python:3.11-slim
-
-WORKDIR /app
-
-COPY requirements.txt .
-
-# Consider adding build arguments for proxy if needed in your environment
-# ARG HTTP_PROXY
-# ARG HTTPS_PROXY
-# ENV http_proxy=$HTTP_PROXY
-# ENV https_proxy=$HTTPS_PROXY
-
-RUN pip install --no-cache-dir -r requirements.txt
-
-COPY . .
-
-# Ensure main.py is executable if needed, though python command handles it
-# RUN chmod +x main.py
-
-CMD ["python", "main.py"]
-
-```
-
-### `docker-compose.yml`
-```
-services:
- remnawave-tg-shop:
- image: ghcr.io/machka-pasla/remnawave-tg-shop:latest
-# build: .
- container_name: remnawave-tg-shop
- hostname: remnawave-tg-shop
- env_file:
- - .env
-# networks:
-# - remnawave-network
-# volumes:
-# - ./locales:/app/locales
- restart: unless-stopped
-
- postgres:
- image: postgres:17
- container_name: remnawave-tg-shop-db
- env_file:
- - .env
- volumes:
- - remnawave-tg-shop-db-data:/var/lib/postgresql/data
-# networks:
-# - remnawave-network
- restart: unless-stopped
-
-# networks:
-# remnawave-network:
-# external: true
-
-volumes:
- remnawave-tg-shop-db-data:
- name: remnawave-tg-shop-db-data
-```
-
-**Note on `remnawave-network`:** The `docker-compose.yml` assumes an external network named `remnawave-network`. If this network doesn't exist or you want the bot on a different network (e.g., a default bridge or a new one defined in this compose file), you'll need to adjust the `networks` section. If the Remnawave panel is also running in Docker on the same host, putting them on the same user-defined network allows them to communicate using service names.
-
-## 🛠️ Project Structure (Overview)
+## 📁 Структура проекта
```
.
├── bot/
-│ ├── filters/ # Custom Aiogram filters (e.g., AdminFilter)
-│ ├── handlers/ # Message and callback query handlers (admin and user)
-│ ├── keyboards/ # Inline and reply keyboard generators
-│ ├── middlewares/ # Custom Aiogram middlewares (i18n, ban check, logger)
-│ ├── services/ # Business logic (payments, subscriptions, panel API interaction)
-│ ├── states/ # FSM states
-│ └── main_bot.py # Core bot logic, dispatcher setup, startup/shutdown
+│ ├── filters/ # Пользовательские фильтры Aiogram
+│ ├── handlers/ # Обработчики сообщений и колбэков
+│ ├── keyboards/ # Клавиатуры
+│ ├── middlewares/ # Промежуточные слои (i18n, проверка бана)
+│ ├── services/ # Бизнес-логика (платежи, API панели)
+│ ├── states/ # Состояния FSM
+│ └── main_bot.py # Основная логика бота
├── config/
-│ └── settings.py # Pydantic settings and config parser
+│ └── settings.py # Настройки Pydantic
├── db/
-│ ├── dal/ # Data Access Layer (queries, transactions)
-│ ├── database_setup.py # DB connection/init setup
-│ └── models.py # ORM models (e.g., SQLAlchemy)
-├── locales/ # Localization files
-│ ├── en.json # English locale
-│ └── ru.json # Russian locale
-├── .env.example # Example environment variables for local setup
-├── .env # Actual environment variables (ignored by Git)
-├── Dockerfile # Docker image build instructions
-├── docker-compose.yml # Docker Compose orchestration config
-├── requirements.txt # List of Python dependencies
-├── README.md # Project documentation
-└── main.py # Entry point to launch the bot
+│ ├── dal/ # Слой доступа к данным (DAL)
+│ ├── database_setup.py # Настройка БД
+│ └── models.py # Модели SQLAlchemy
+├── locales/ # Файлы локализации (ru, en)
+├── .env.example # Пример файла с переменными окружения
+├── Dockerfile # Инструкции для сборки Docker-образа
+├── docker-compose.yml # Файл для оркестрации контейнеров
+├── requirements.txt # Зависимости Python
+└── main.py # Точка входа в приложение
```
-## 🤝 Contributing
+## 🔮 Планы на будущее
-Contributions are welcome!
+- Расширенные типы промокодов (например, скидки в процентах).
-## 🔮 Future Enhancements
-
-- More detailed analytics for admin.
-- Support for different payment methods.
-- Advanced promo code types (e.g., percentage discounts).
-
-## Donations (pls)
-- Russian and international cards [LINK](https://t.me/tribute/app?startapp=dqdg)
+## ❤️ Поддержка
+- Карты РФ и зарубежные: [Tribute](https://t.me/tribute/app?startapp=dqdg)
+- Crypto: `USDT TRC-20 TT3SqBbfU4vYm6SUwUVNZsy278m2xbM4GE`