def __init__(self, token: base.String, loop: Optional[Union[asyncio.BaseEventLoop, asyncio.AbstractEventLoop]] = None, connections_limit: Optional[base.Integer] = None, proxy: Optional[base.String] = None, proxy_auth: Optional[aiohttp.BasicAuth] = None, validate_token: Optional[base.Boolean] = True, parse_mode: typing.Optional[base.String] = None, timeout: typing.Optional[typing.Union[base.Integer, base.Float]] = None): """ Instructions how to get Bot token is found here: https://core.telegram.org/bots#3-how-do-i-create-a-bot :param token: token from @BotFather :type token: :obj:`str` :param loop: event loop :type loop: Optional Union :obj:`asyncio.BaseEventLoop`, :obj:`asyncio.AbstractEventLoop` :param connections_limit: connections limit for aiohttp.ClientSession :type connections_limit: :obj:`int` :param proxy: HTTP proxy URL :type proxy: :obj:`str` :param proxy_auth: Authentication information :type proxy_auth: Optional :obj:`aiohttp.BasicAuth` :param validate_token: Validate token. :type validate_token: :obj:`bool` :param parse_mode: You can set default parse mode :type parse_mode: :obj:`str` :param timeout: Request timeout :type timeout: :obj:`typing.Optional[typing.Union[base.Integer, base.Float]]` :raise: when token is invalid throw an :obj:`aiogram.utils.exceptions.ValidationError` """ # Authentication if validate_token: api.check_token(token) self.__token = token self.proxy = proxy self.proxy_auth = proxy_auth # Asyncio loop instance if loop is None: loop = asyncio.get_event_loop() self.loop = loop # aiohttp main session ssl_context = ssl.create_default_context(cafile=certifi.where()) if isinstance(proxy, str) and (proxy.startswith('socks5://') or proxy.startswith('socks4://')): from aiohttp_socks import SocksConnector from aiohttp_socks.helpers import parse_socks_url socks_ver, host, port, username, password = parse_socks_url(proxy) if proxy_auth: if not username: username = proxy_auth.login if not password: password = proxy_auth.password connector = SocksConnector(socks_ver=socks_ver, host=host, port=port, username=username, password=password, limit=connections_limit, ssl_context=ssl_context, rdns=True, loop=self.loop) self.proxy = None self.proxy_auth = None else: connector = aiohttp.TCPConnector(limit=connections_limit, ssl=ssl_context, loop=self.loop) self._timeout = None self.timeout = timeout self.session = aiohttp.ClientSession(connector=connector, loop=self.loop, json_serialize=json.dumps) self.parse_mode = parse_mode
def __init__(self, token: Optional[str] = None, service_url: str = SERVICE_URL, connections_limit: Optional[int] = None, proxy: Optional[str] = None, proxy_auth: Optional[aiohttp.BasicAuth] = None, loop: asyncio.AbstractEventLoop = None, json_serialize: callable = None, json_deserialize: callable = None): # Asyncio loop instance if loop is None: loop = asyncio.get_event_loop() self.loop = loop # JSON if not json_serialize or not json_deserialize: try: import ujson as json except ImportError: import json if json_serialize is None: json_serialize = json.dumps if json_deserialize is None: json_deserialize = json.loads self._json_serialize = json_serialize self._json_deserialize = json_deserialize # URL's self._service = None self._api_url = None self._service_url = None self.service = service_url # Proxy settings self.proxy = proxy self.proxy_auth = proxy_auth # aiohttp main session ssl_context = ssl.create_default_context(cafile=certifi.where()) if isinstance(proxy, str) and (proxy.startswith('socks5://') or proxy.startswith('socks4://')): from aiohttp_socks import SocksConnector from aiohttp_socks.helpers import parse_socks_url socks_ver, host, port, username, password = parse_socks_url(proxy) if proxy_auth: if not username: username = proxy_auth.login if not password: password = proxy_auth.password connector = SocksConnector(socks_ver=socks_ver, host=host, port=port, username=username, password=password, limit=connections_limit, ssl_context=ssl_context, rdns=True, loop=self.loop) self.proxy = None self.proxy_auth = None else: connector = aiohttp.TCPConnector(limit=connections_limit, ssl=ssl_context, loop=self.loop) self.session = aiohttp.ClientSession(connector=connector, loop=self.loop, json_serialize=json_serialize) self._token = token