diff --git a/.gitignore b/.gitignore index b7faf40..428ce32 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +stats.db + # Byte-compiled / optimized / DLL files __pycache__/ *.py[codz] diff --git a/bot.py b/bot.py index 3c2c86d..c1ab584 100644 --- a/bot.py +++ b/bot.py @@ -19,6 +19,8 @@ from aiogram.types import ( PreCheckoutQuery, ) from aiogram.utils.keyboard import InlineKeyboardBuilder +from aiogram.client.default import DefaultBotProperties +from aiogram.client.session.aiohttp import AiohttpSession logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) @@ -38,6 +40,7 @@ class Settings: marzban_username: str marzban_password: str admin_ids: set[int] + proxy: str db_path: str = "stats.db" @classmethod @@ -54,6 +57,7 @@ class Settings: marzban_username=os.environ["MARZBAN_USERNAME"], marzban_password=os.environ["MARZBAN_PASSWORD"], admin_ids=admin_ids, + proxy=os.getenv("HTTP_PROXY", None), db_path=os.getenv("DB_PATH", "stats.db"), ) @@ -149,7 +153,10 @@ def bytes_to_gb(value: int | float) -> str: class VpnBot: def __init__(self, settings: Settings): self.settings = settings - self.bot = Bot(settings.bot_token, parse_mode=ParseMode.HTML) + self.session = AiohttpSession(proxy=settings.proxy) + self.bot = Bot(settings.bot_token, + default=DefaultBotProperties(parse_mode=ParseMode.HTML), + session=self.session) self.dp = Dispatcher() self.marzban = MarzbanClient( settings.marzban_url, diff --git a/requirements.txt b/requirements.txt index 70372d5..9213ec9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ aiogram>=3.7.0 aiohttp>=3.9.0 aiosqlite>=0.20.0 +aiohttp-socks >= 0.11.0