Using aiogram with aiohttp as http client
AiohttpSession represents a wrapper-class around ClientSession from aiohttp
pip install aiogram_aiohttp_session
from aiogram import Bot
from aiogram_aiohttp_session import AiohttpSession
session = AiohttpSession()
Bot('token', session=session)
In order to use AiohttpSession with proxy connector you have to install aiohttp-socks
from aiogram import Bot
from aiogram_aiohttp_session import AiohttpSession
session = AiohttpSession(proxy="protocol://host:port/")
Bot(token="bot token", session=session)
Note
Only following protocols are supported: http(tunneling), socks4(a), socks5 as aiohttp_socks documentation claims.
Proxy authorization credentials can be specified in proxy URL or come as an instance of aiohttp.BasicAuth containing login and password.
Consider examples:
from aiohttp import BasicAuth
from aiogram_aiohttp_session import AiohttpSession
auth = BasicAuth(login="user", password="password")
session = AiohttpSession(proxy=("protocol://host:port", auth))
# or simply include your basic auth credential in URL
session = AiohttpSession(proxy="protocol://user:password@host:port")
Note
Library prefers BasicAuth over username and password in URL, so if proxy URL contains login and password and BasicAuth object is passed at the same time aiogram will use login and password from BasicAuth instance.
Since aiohttp-socks supports proxy chains, you're able to use them in aiogram
from aiohttp import BasicAuth
from aiogram_aiohttp_session import AiohttpSession
auth = BasicAuth(login="user", password="password")
session = AiohttpSession(
proxy={"protocol0://host:port0",
"protocol1://user:password@host:port1",
("protocol2://host:port2", auth),} # can be any iterable if not set
)
Get rid of huge redundant code-base in main repo. Make an example of session extension for aiogram