0a53b85b8a
Replace all ~45 direct Bot() calls across the codebase with a centralized create_bot() factory function that automatically configures SOCKS5 proxy session when PROXY_URL is set. This ensures proxy support applies uniformly to all Telegram API traffic. Key changes: - Add app/bot_factory.py with create_bot() factory - Replace direct Bot() instantiation in 33 files - Fix session leaks in cloudpayments.py and auth.py (async with) - Replace 2 direct httpx calls to api.telegram.org with bot.create_invoice_link() (balance.py, wheel.py) - Remove now-unused imports (Bot, DefaultBotProperties, ParseMode, httpx)
21 lines
713 B
Python
21 lines
713 B
Python
"""Factory for creating Bot instances with proxy support."""
|
|
|
|
from aiogram import Bot
|
|
from aiogram.client.default import DefaultBotProperties
|
|
from aiogram.enums import ParseMode
|
|
|
|
from app.config import settings
|
|
|
|
|
|
def create_bot(token: str | None = None, **kwargs) -> Bot:
|
|
"""Create a Bot instance with SOCKS5 proxy session if PROXY_URL is configured."""
|
|
proxy_url = settings.get_proxy_url()
|
|
session = None
|
|
if proxy_url:
|
|
from aiogram.client.session.aiohttp import AiohttpSession
|
|
|
|
session = AiohttpSession(proxy=proxy_url)
|
|
|
|
kwargs.setdefault('default', DefaultBotProperties(parse_mode=ParseMode.HTML))
|
|
return Bot(token=token or settings.BOT_TOKEN, session=session, **kwargs)
|