diff --git a/handlers/admin/admin_coupons.py b/handlers/admin/admin_coupons.py index 5ea3ca98..c7964978 100644 --- a/handlers/admin/admin_coupons.py +++ b/handlers/admin/admin_coupons.py @@ -6,7 +6,7 @@ from aiogram.fsm.state import State, StatesGroup from aiogram.types import InlineKeyboardButton from aiogram.utils.keyboard import InlineKeyboardBuilder -from database import create_coupon, delete_coupon_from_db, get_all_coupons +from utils.database import create_coupon, delete_coupon_from_db, get_all_coupons from filters.admin import IsAdminFilter from logger import logger diff --git a/handlers/admin/admin_panel.py b/handlers/admin/admin_panel.py index b0adf30a..8afa4d6a 100644 --- a/handlers/admin/admin_panel.py +++ b/handlers/admin/admin_panel.py @@ -10,7 +10,7 @@ from aiogram.fsm.state import State, StatesGroup from aiogram.types import BufferedInputFile, CallbackQuery, InlineKeyboardButton from aiogram.utils.keyboard import InlineKeyboardBuilder -from backup import backup_database +from utils.backup import backup_database from bot import bot from filters.admin import IsAdminFilter from logger import logger diff --git a/handlers/admin/admin_servers.py b/handlers/admin/admin_servers.py index b9260c66..23bddaf6 100644 --- a/handlers/admin/admin_servers.py +++ b/handlers/admin/admin_servers.py @@ -6,9 +6,9 @@ from aiogram.utils.keyboard import InlineKeyboardBuilder import asyncpg from py3xui import AsyncApi -from backup import create_backup_and_send_to_admins +from utils.backup import create_backup_and_send_to_admins from config import ADMIN_PASSWORD, ADMIN_USERNAME, DATABASE_URL -from database import check_unique_server_name, get_servers_from_db +from utils.database import check_unique_server_name, get_servers_from_db from filters.admin import IsAdminFilter router = Router() diff --git a/handlers/admin/admin_user_editor.py b/handlers/admin/admin_user_editor.py index d579cb5f..d840a875 100644 --- a/handlers/admin/admin_user_editor.py +++ b/handlers/admin/admin_user_editor.py @@ -9,10 +9,10 @@ from aiogram.types import CallbackQuery, InlineKeyboardButton from aiogram.utils.keyboard import InlineKeyboardBuilder from config import TOTAL_GB -from database import get_client_id_by_email, get_servers_from_db, restore_trial, update_key_expiry +from utils.database import get_client_id_by_email, get_servers_from_db, restore_trial, update_key_expiry from filters.admin import IsAdminFilter -from handlers.keys.key_utils import delete_key_from_cluster, delete_key_from_db, renew_key_in_cluster -from handlers.utils import sanitize_key_name +from utils.keys.key_utils import delete_key_from_cluster, delete_key_from_db, renew_key_in_cluster +from utils.utils import sanitize_key_name from logger import logger router = Router() diff --git a/handlers/coupons.py b/handlers/coupons.py index ed487671..59809fb1 100644 --- a/handlers/coupons.py +++ b/handlers/coupons.py @@ -7,7 +7,7 @@ from aiogram.fsm.state import State, StatesGroup from aiogram.types import InlineKeyboardButton from aiogram.utils.keyboard import InlineKeyboardBuilder -from database import update_balance +from utils.database import update_balance class CouponActivationState(StatesGroup): diff --git a/handlers/keys/key_management.py b/handlers/keys/key_management.py index 9efe8ec1..1c417788 100644 --- a/handlers/keys/key_management.py +++ b/handlers/keys/key_management.py @@ -15,15 +15,14 @@ from config import ( DOWNLOAD_ANDROID, DOWNLOAD_IOS, PUBLIC_LINK, - RENEWAL_PLANS, RENEWAL_PRICES, SUPPORT_CHAT_URL, TRIAL_TIME, ) -from database import get_balance, get_trial, store_key, update_balance -from handlers.keys.key_utils import create_key_on_cluster -from handlers.texts import DISCOUNTS, KEY, NULL_BALANCE, key_message_success -from handlers.utils import generate_random_email, get_least_loaded_cluster +from utils.database import get_balance, get_trial, store_key, update_balance +from utils.keys.key_utils import create_key_on_cluster +from handlers.texts import DISCOUNTS, KEY, key_message_success +from utils.utils import generate_random_email, get_least_loaded_cluster from logger import logger router = Router() diff --git a/handlers/keys/keys.py b/handlers/keys/keys.py index 236545b4..e75c1c30 100644 --- a/handlers/keys/keys.py +++ b/handlers/keys/keys.py @@ -9,8 +9,8 @@ from aiogram.types import BufferedInputFile, InlineKeyboardButton from aiogram.utils.keyboard import InlineKeyboardBuilder from config import CONNECT_ANDROID, CONNECT_IOS, DOWNLOAD_ANDROID, DOWNLOAD_IOS, PUBLIC_LINK, RENEWAL_PLANS, TOTAL_GB -from database import delete_key, get_balance, get_servers_from_db, store_key, update_balance, update_key_expiry -from handlers.keys.key_utils import ( +from utils.database import delete_key, get_balance, get_servers_from_db, store_key, update_balance, update_key_expiry +from utils.keys.key_utils import ( delete_key_from_cluster, delete_key_from_db, renew_key_in_cluster, @@ -25,7 +25,7 @@ from handlers.texts import ( SUCCESS_RENEWAL_MSG, key_message, ) -from handlers.utils import get_least_loaded_cluster, handle_error +from utils.utils import get_least_loaded_cluster, handle_error from logger import logger locale.setlocale(locale.LC_TIME, "ru_RU.UTF-8") diff --git a/handlers/notifications.py b/handlers/notifications.py index 7ac8ccf2..68ae5909 100644 --- a/handlers/notifications.py +++ b/handlers/notifications.py @@ -7,7 +7,7 @@ import asyncpg from py3xui import AsyncApi from config import ADMIN_PASSWORD, ADMIN_USERNAME, DATABASE_URL, DEV_MODE, RENEWAL_PLANS, TOTAL_GB, TRIAL_TIME -from database import ( +from utils.database import ( add_notification, check_notification_time, delete_key, @@ -16,7 +16,7 @@ from database import ( update_balance, update_key_expiry, ) -from handlers.keys.key_utils import delete_key_from_cluster, renew_key_in_cluster +from utils.keys.key_utils import delete_key_from_cluster, renew_key_in_cluster from handlers.texts import KEY_EXPIRY_10H, KEY_EXPIRY_24H, KEY_RENEWED from logger import logger diff --git a/handlers/payments/cryprobot_pay.py b/handlers/payments/cryprobot_pay.py index 6265d4db..7d2188f4 100644 --- a/handlers/payments/cryprobot_pay.py +++ b/handlers/payments/cryprobot_pay.py @@ -9,8 +9,8 @@ from aiogram.utils.keyboard import InlineKeyboardBuilder from aiohttp import web from config import CRYPTO_BOT_ENABLE, CRYPTO_BOT_TOKEN, RUB_TO_USDT -from database import add_connection, add_payment, check_connection_exists, get_key_count, update_balance -from handlers.payments.utils import send_payment_success_notification +from utils.database import add_connection, add_payment, check_connection_exists, get_key_count, update_balance +from utils.payments.utils import send_payment_success_notification from handlers.texts import PAYMENT_OPTIONS from logger import logger diff --git a/handlers/payments/freekassa_pay.py b/handlers/payments/freekassa_pay.py index 7c423129..6e1c33fe 100644 --- a/handlers/payments/freekassa_pay.py +++ b/handlers/payments/freekassa_pay.py @@ -13,8 +13,8 @@ from aiohttp import web import requests from config import FREEKASSA_API_KEY, FREEKASSA_SHOP_ID -from database import add_payment, update_balance -from handlers.payments.utils import send_payment_success_notification +from utils.database import add_payment, update_balance +from utils.payments.utils import send_payment_success_notification from handlers.texts import PAYMENT_OPTIONS router = Router() diff --git a/handlers/payments/robokassa_pay.py b/handlers/payments/robokassa_pay.py index 9ae90a29..bfa09e2c 100644 --- a/handlers/payments/robokassa_pay.py +++ b/handlers/payments/robokassa_pay.py @@ -10,8 +10,8 @@ from aiohttp import web from robokassa import HashAlgorithm, Robokassa from config import ROBOKASSA_ENABLE, ROBOKASSA_LOGIN, ROBOKASSA_PASSWORD1, ROBOKASSA_PASSWORD2, ROBOKASSA_TEST_MODE -from database import add_connection, add_payment, check_connection_exists, get_key_count, update_balance -from handlers.payments.utils import send_payment_success_notification +from utils.database import add_connection, add_payment, check_connection_exists, get_key_count, update_balance +from utils.payments.utils import send_payment_success_notification from handlers.texts import PAYMENT_OPTIONS from logger import logger diff --git a/handlers/payments/stars_pay.py b/handlers/payments/stars_pay.py index 698444b8..75135c5e 100644 --- a/handlers/payments/stars_pay.py +++ b/handlers/payments/stars_pay.py @@ -7,8 +7,8 @@ from aiogram.types import InlineKeyboardButton, LabeledPrice, PreCheckoutQuery from aiogram.utils.keyboard import InlineKeyboardBuilder from config import RUB_TO_XTR -from database import add_connection, add_payment, check_connection_exists, get_key_count, update_balance -from handlers.payments.utils import send_payment_success_notification +from utils.database import add_connection, add_payment, check_connection_exists, get_key_count, update_balance +from utils.payments.utils import send_payment_success_notification from handlers.texts import PAYMENT_OPTIONS from logger import logger diff --git a/handlers/payments/yookassa_pay.py b/handlers/payments/yookassa_pay.py index c1687107..d0dff390 100644 --- a/handlers/payments/yookassa_pay.py +++ b/handlers/payments/yookassa_pay.py @@ -10,8 +10,8 @@ from aiohttp import web from yookassa import Configuration, Payment from config import YOOKASSA_ENABLE, YOOKASSA_SECRET_KEY, YOOKASSA_SHOP_ID -from database import add_connection, add_payment, check_connection_exists, get_key_count, update_balance -from handlers.payments.utils import send_payment_success_notification +from utils.database import add_connection, add_payment, check_connection_exists, get_key_count, update_balance +from utils.payments.utils import send_payment_success_notification from handlers.texts import PAYMENT_OPTIONS from logger import logger diff --git a/handlers/profile.py b/handlers/profile.py index 005aecf1..34c514ce 100644 --- a/handlers/profile.py +++ b/handlers/profile.py @@ -6,7 +6,7 @@ from aiogram.types import BufferedInputFile, InlineKeyboardButton from aiogram.utils.keyboard import InlineKeyboardBuilder from config import NEWS_MESSAGE, RENEWAL_PLANS -from database import get_balance, get_key_count, get_referral_stats +from utils.database import get_balance, get_key_count, get_referral_stats from handlers.texts import get_referral_link, invite_message_send, profile_message_send router = Router() diff --git a/handlers/start.py b/handlers/start.py index 3c15d9bc..3f678978 100644 --- a/handlers/start.py +++ b/handlers/start.py @@ -8,8 +8,8 @@ from aiogram.types import BufferedInputFile, CallbackQuery, InlineKeyboardButton from aiogram.utils.keyboard import InlineKeyboardBuilder from config import CHANNEL_URL, CONNECT_ANDROID, CONNECT_IOS, DOWNLOAD_ANDROID, DOWNLOAD_IOS, SUPPORT_CHAT_URL -from database import add_connection, add_referral, check_connection_exists, get_trial, use_trial -from handlers.keys.trial_key import create_trial_key +from utils.database import add_connection, add_referral, check_connection_exists, get_trial, use_trial +from utils.keys.trial_key import create_trial_key from handlers.texts import INSTRUCTIONS_TRIAL, WELCOME_TEXT, get_about_vpn router = Router() diff --git a/middlewares/user.py b/middlewares/user.py index 969020ef..ee130b16 100644 --- a/middlewares/user.py +++ b/middlewares/user.py @@ -3,7 +3,7 @@ from typing import Any, Awaitable, Callable, Dict from aiogram import BaseMiddleware from aiogram.types import TelegramObject, User -from database import upsert_user +from utils.database import upsert_user class UserMiddleware(BaseMiddleware): diff --git a/utils/__init__.py b/utils/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backup.py b/utils/backup.py similarity index 100% rename from backup.py rename to utils/backup.py diff --git a/client.py b/utils/client.py similarity index 100% rename from client.py rename to utils/client.py diff --git a/database.py b/utils/database.py similarity index 100% rename from database.py rename to utils/database.py diff --git a/handlers/keys/key_utils.py b/utils/keys/key_utils.py similarity index 98% rename from handlers/keys/key_utils.py rename to utils/keys/key_utils.py index 8d39c8b9..36754467 100644 --- a/handlers/keys/key_utils.py +++ b/utils/keys/key_utils.py @@ -3,9 +3,9 @@ import asyncio import asyncpg from py3xui import AsyncApi -from client import add_client, delete_client, extend_client_key +from utils.client import add_client, delete_client, extend_client_key from config import ADMIN_PASSWORD, ADMIN_USERNAME, DATABASE_URL, TOTAL_GB -from database import get_servers_from_db +from utils.database import get_servers_from_db from logger import logger diff --git a/handlers/keys/subscriptions.py b/utils/keys/subscriptions.py similarity index 99% rename from handlers/keys/subscriptions.py rename to utils/keys/subscriptions.py index 45b0d3fc..176186c9 100644 --- a/handlers/keys/subscriptions.py +++ b/utils/keys/subscriptions.py @@ -6,7 +6,7 @@ from aiohttp import web import asyncpg from config import DATABASE_URL, TRANSITION_DATE_STR -from database import get_servers_from_db +from utils.database import get_servers_from_db from logger import logger diff --git a/handlers/keys/trial_key.py b/utils/keys/trial_key.py similarity index 91% rename from handlers/keys/trial_key.py rename to utils/keys/trial_key.py index 819d66da..0ed8f7bb 100644 --- a/handlers/keys/trial_key.py +++ b/utils/keys/trial_key.py @@ -5,11 +5,11 @@ import uuid from py3xui import AsyncApi -from client import add_client +from utils.client import add_client from config import ADMIN_PASSWORD, ADMIN_USERNAME, PUBLIC_LINK, TOTAL_GB, TRIAL_TIME -from database import get_servers_from_db, store_key, use_trial +from utils.database import get_servers_from_db, store_key, use_trial from handlers.texts import INSTRUCTIONS -from handlers.utils import generate_random_email, get_least_loaded_cluster +from utils.utils import generate_random_email, get_least_loaded_cluster async def create_trial_key(tg_id: int, session: Any): diff --git a/handlers/payments/utils.py b/utils/payments/utils.py similarity index 100% rename from handlers/payments/utils.py rename to utils/payments/utils.py diff --git a/servers.py b/utils/servers.py similarity index 99% rename from servers.py rename to utils/servers.py index fbb81968..4a275bc9 100644 --- a/servers.py +++ b/utils/servers.py @@ -9,7 +9,7 @@ from ping3 import ping from bot import bot from config import ADMIN_ID, DATABASE_URL -from database import get_servers_from_db +from utils.database import get_servers_from_db from logger import logger try: diff --git a/handlers/utils.py b/utils/utils.py similarity index 98% rename from handlers/utils.py rename to utils/utils.py index 95871cf6..42709e76 100644 --- a/handlers/utils.py +++ b/utils/utils.py @@ -6,7 +6,7 @@ import asyncpg from bot import bot from config import DATABASE_URL -from database import get_servers_from_db +from utils.database import get_servers_from_db from logger import logger