Implement SOCKS5 proxy support for Bot

Added support for SOCKS5 proxy in Bot initialization.
This commit is contained in:
lie-must-die
2026-04-04 17:46:57 +03:00
committed by GitHub
parent b536c06e20
commit 03e845c1e3

View File

@@ -2,8 +2,10 @@ from collections.abc import AsyncIterable
from aiogram import Bot
from aiogram.client.default import DefaultBotProperties
from aiogram.client.session.aiohttp import AiohttpSession
from aiogram.enums import ParseMode
from aiogram_dialog import BgManagerFactory
from aiohttp_socks import ProxyConnector
from dishka import Provider, Scope, from_context, provide
from loguru import logger
@@ -19,9 +21,17 @@ class BotProvider(Provider):
async def get_bot(self, config: AppConfig) -> AsyncIterable[Bot]:
logger.debug("Initializing Bot instance")
session = None
if config.bot.proxy_url:
proxy = config.bot.proxy_url.get_secret_value()
logger.info(f"Using SOCKS5 proxy for Telegram: {proxy}")
connector = ProxyConnector.from_url(proxy)
session = AiohttpSession(connector=connector)
async with Bot(
token=config.bot.token.get_secret_value(),
default=DefaultBotProperties(parse_mode=ParseMode.HTML),
session=session,
) as bot:
yield bot