diff --git a/README.md b/README.md index e858b1f5..24b4bfcf 100644 --- a/README.md +++ b/README.md @@ -29,9 +29,7 @@ SoloBot реализует множество функций, включая: - -- **Выдача ключей на пробный период**. -- **Выдача ключей на длительные периоды** (1 месяц, 3 месяца, полгода, год). +- **Выдача подписок на пробный и длительные периоды** (1 месяц, 3 месяца, полгода, год). - **Продление ключей** на указанные периоды. - Полный контроль клиента над своими ключами: - Удаление ключей. @@ -44,7 +42,8 @@ SoloBot реализует множество функций, включая: - **Пополнение баланса**: * через Юкасса (самозанятость и ИП) * через freekassa (Физические Лица) - * Криптовалюта (Thanks [izzzzzi](https://github.com/izzzzzi)) + * Криптовалюта (Thanks [izzzzzi](https://github.com/izzzzzi)) + * Звезды Telegram - Периодические **бэкапы базы данных клиентов**. - Уведомления: - Произвольные сообщения через админку. @@ -53,7 +52,10 @@ SoloBot реализует множество функций, включая: - **Чат поддержки** и канал для связи. - **Автоматическое продление ключа** при наличии достаточного баланса. - **Удобная админка прямо в боте** -- **мультисерверность** добавляй сервера в конфиг, и они автоматически будут в боте +- Серверы: + - **мультисерверность**- добавление сервера прямо в админке + - **Проверка на доступность** - бот следит за серверами и их откликом + - **Балансировка** - бот выдает подписку на наименее загруженный сервер --- @@ -62,7 +64,7 @@ SoloBot реализует множество функций, включая: Проект использует следующие технологии: -- **Python** версии 3.8 или выше. +- **Python** версии 3.10 или выше. - **Git** для клонирования репозитория. - **Virtualenv** для создания виртуального окружения (рекомендуется). - **PostgreSQL** для хранения данных. @@ -118,20 +120,10 @@ ADMIN_PASSWORD = пароль от вашей панели x-ray ADD_CLIENT_URL = f"{API_URL}/panel/api/inbounds/addClient" GET_INBOUNDS_URL = f"{API_URL}/panel/api/inbounds/list/" AUTH_URL = f"{API_URL}/login/" -DATABASE_URL = путь к вашей базе данных, имеет вид "postgresql://{user}:{password}@{Ip-adress}:{port}/{имя базы данных}" -ADMIN_ID = ID телеграм профиля администратора -CHANNEL_URL = ссылка на ваш телеграм канал -YOOKASSA_SECRET_KEY = ваш ключ юкассы -YOOKASSA_SHOP_ID = ваш шопайди -WEBHOOK_HOST = адрес вашего сервера для вебхуков -WEBHOOK_PATH = '/webhook/' -WEBHOOK_URL = f"{WEBHOOK_HOST}{WEBHOOK_PATH}" -SUPPORT_CHAT_URL = ваша ссылка на поддержку ``` -**Мы высылаем детальный гайд и недостающие файлы в боте** +**Мы высылаем детальный гайд и недостающие файлы в поддержке бота** -**Все описания в одном файле!** Удобно настроить бот под свой сервис изменив информацию и цены в одном месте ### 🚀 Запуск @@ -142,7 +134,12 @@ python main.py ``` ### 🔗 SoloBot в Telegram и Полная версия -Попробуйте SoloBot прямо сейчас в Telegram [по этой ссылке](https://t.me/SoloNetVPN_bot). +#### Наш [**➡ сайт**](https://pocomacho.ru/solonetbot/): -Вы также можете поддержать автора или купить полную версию бота с сопровождением по установке в поддержке бота! -Полная пошаговая инстуркция по запуску бота предоставляется в поддержке бота +Всегда актуальные гайды по установке, файлы для запуска и ссылка на общий чат: +![image](https://github.com/user-attachments/assets/737fbc21-e4b1-4c69-9323-71284d34e454) + + +Попробовать SoloBot прямо сейчас в Telegram [**➡ Попробовать**](https://t.me/SoloNetVPN_bot). + +Связаться с нами через [**➡ поддержку**](https://t.me/solonet_sup). Там вы сможете купить полную версию и получить логин и пароль от сайта, а также задать необходимые вопросы! diff --git a/handlers/keys/key_management.py b/handlers/keys/key_management.py index cde589ed..9efe8ec1 100644 --- a/handlers/keys/key_management.py +++ b/handlers/keys/key_management.py @@ -67,14 +67,6 @@ async def confirm_create_new_key(callback_query: CallbackQuery, state: FSMContex logger.info(f"User {tg_id} confirmed creation of a new key.") - balance = await get_balance(tg_id) - if balance < RENEWAL_PLANS["1"]["price"]: - builder = InlineKeyboardBuilder() - builder.row(InlineKeyboardButton(text="👤 Личный кабинет", callback_data="profile")) - await callback_query.message.answer(NULL_BALANCE, reply_markup=builder.as_markup()) - await state.clear() - return - logger.info(f"Balance for user {tg_id} is sufficient. Proceeding with key creation.") await handle_key_creation(tg_id, state, session, callback_query) @@ -136,6 +128,7 @@ async def select_tariff_plan(callback_query: CallbackQuery, state: FSMContext, s balance = await get_balance(tg_id) if balance < plan_price: builder = InlineKeyboardBuilder() + builder.row(InlineKeyboardButton(text="💳 Пополнить баланс", callback_data="pay")) builder.row(InlineKeyboardButton(text="👤 Личный кабинет", callback_data="profile")) await callback_query.message.answer( "💳 Недостаточно средств для создания подписки. Пополните баланс в личном кабинете.", diff --git a/install.sh b/install.sh new file mode 100644 index 00000000..1ed1a504 --- /dev/null +++ b/install.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Check if the virtual environment directory exists +if [ ! -d "venv" ]; then + echo "Creating virtual environment..." + python3 -m venv venv +fi + +# Activate the virtual environment +source venv/bin/activate + +# Install dependencies if they haven't been installed yet +if [ ! -f "venv/lib/python*/site-packages/installed" ]; then + echo "Installing wheel for faster installing..." + pip3 install wheel + + echo "Installing dependencies..." + if [ -f "requirements.txt" ]; then + pip3 install -r requirements.txt + fi +fi + +echo "Installation completed successfully!" diff --git a/start.sh b/start.sh new file mode 100644 index 00000000..64550735 --- /dev/null +++ b/start.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# Activate the virtual environment +source venv/bin/activate + +# Start the bot +echo "Starting the bot..." +python3 main.py + +# Deactivate the virtual environment when done +deactivate