Не могу запустить бота с aiogram, скорее всего проблема в aiohttp

Я не могу запустить бота в aoigram Выдает ошибку:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/aiohttp/connector.py", line 946, in _wrap_create_connection
    return await self._loop.create_connection(*args, **kwargs)  # type: ignore  # noqa
  File "/usr/lib/python3.8/asyncio/base_events.py", line 1017, in create_connection
    raise exceptions[0]
  File "/usr/lib/python3.8/asyncio/base_events.py", line 1002, in create_connection
    sock = await self._connect_sock(
  File "/usr/lib/python3.8/asyncio/base_events.py", line 916, in _connect_sock
    await self.sock_connect(sock, address)
  File "/usr/lib/python3.8/asyncio/selector_events.py", line 485, in sock_connect
    return await fut
  File "/usr/lib/python3.8/asyncio/selector_events.py", line 490, in _sock_connect
    sock.connect(address)
OSError: [Errno 101] Network is unreachable

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/aiogram/bot/api.py", line 103, in make_request
    async with session.post(url, data=req, **kwargs) as response:
  File "/usr/local/lib/python3.8/dist-packages/aiohttp/client.py", line 1083, in __aenter__
    self._resp = await self._coro
  File "/usr/local/lib/python3.8/dist-packages/aiohttp/client.py", line 490, in _request
    conn = await self._connector.connect(
  File "/usr/local/lib/python3.8/dist-packages/aiohttp/connector.py", line 528, in connect
    proto = await self._create_connection(req, traces, timeout)
  File "/usr/local/lib/python3.8/dist-packages/aiohttp/connector.py", line 868, in _create_connection
    _, proto = await self._create_direct_connection(
  File "/usr/local/lib/python3.8/dist-packages/aiohttp/connector.py", line 1023, in _create_direct_connection
    raise last_exc
  File "/usr/local/lib/python3.8/dist-packages/aiohttp/connector.py", line 999, in _create_direct_connection
    transp, proto = await self._wrap_create_connection(
  File "/usr/local/lib/python3.8/dist-packages/aiohttp/connector.py", line 953, in _wrap_create_connection
    raise client_error(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host api.telegram.org:443 ssl:default [Network is unreachable]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/anatoliy/Документы/Coding/Bots/Telegram/Орел_Решка_Bot/bot.py", line 21, in <module>
    executor.start_polling(dp)
  File "/usr/local/lib/python3.8/dist-packages/aiogram/utils/executor.py", line 41, in start_polling
    executor.start_polling(reset_webhook=reset_webhook, timeout=timeout, relax=relax, fast=fast)
  File "/usr/local/lib/python3.8/dist-packages/aiogram/utils/executor.py", line 309, in start_polling
    loop.run_until_complete(self._startup_polling())
  File "/usr/lib/python3.8/asyncio/base_events.py", line 608, in run_until_complete
    return future.result()
  File "/usr/local/lib/python3.8/dist-packages/aiogram/utils/executor.py", line 360, in _startup_polling
    await self._welcome()
  File "/usr/local/lib/python3.8/dist-packages/aiogram/utils/executor.py", line 350, in _welcome
    user = await self.dispatcher.bot.me
  File "/usr/local/lib/python3.8/dist-packages/aiogram/bot/bot.py", line 27, in me
    setattr(self, '_me', await self.get_me())
  File "/usr/local/lib/python3.8/dist-packages/aiogram/bot/bot.py", line 176, in get_me
    result = await self.request(api.Methods.GET_ME, payload)
  File "/usr/local/lib/python3.8/dist-packages/aiogram/bot/base.py", line 200, in request
    return await api.make_request(self.session, self.__token, method, data, files,
  File "/usr/local/lib/python3.8/dist-packages/aiogram/bot/api.py", line 106, in make_request
    raise exceptions.NetworkError(f"aiohttp client throws an error: {e.__class__.__name__}: {e}")
aiogram.utils.exceptions.NetworkError: Aiohttp client throws an error: ClientConnectorError: Cannot connect to host api.telegram.org:443 ssl:default [Network is unreachable]

Код программы:

from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor


bot = Bot('<token>')
dp = Dispatcher(bot)


@dp.message_handler(commands=['start', 'help'])
async def start_command(message: types.Message):
    await message.reply('Тест')

executor.start_polling(dp)

Версия питона: 3.8


Ответы (4 шт):

Автор решения: Michael

Аналогичная проблема и у меня, тут трабл именно в aiohttp который делает запросы с проверкой ssl сертификата. При отдельных запросах это решается добавлением метапараметра ssl=False: sync with session.get('https://habr.com/ru/post/337420', ssl=False) as response:

Твою проблему решит новая версия: aiohttp==3.7.1

→ Ссылка
Автор решения: Vladyslav

Тебе нужно открыть папку с установленными пакетами, найти там папки:

aiogram > bot

Там будут 2 файла - это api.py и base.py.

В base.py найди строку async with session.get(url, timeout=timeout, proxy=self.proxy, proxy_auth=self.proxy_auth) as response и вставь в параметры ssl=False.

А в файле api.py - найди строку async with session.post(url, data=req, **kwargs) as response и аналогичным образом добавь в парамеры ssl=False.

Это все что нужно, но рекомендую использовать этот метод только для локального использования или тестирования как быстрый аппроач, так как это вмешательство в библиотеку. При обновлении либы - все станет как было.

→ Ссылка
Автор решения: Alena

Мне помогло добавить проксирование, так как в aiogram используется aiohttp для запросов. Чтобы узнать адрес для проксирования: echo "$http_proxy". Этот адрес нужно вставить в бота:

PROXY_URL = '<your_proxy_url>'
bot = Bot(token=API_TOKEN, proxy=PROXY_URL)
→ Ссылка
Автор решения: Alex

Если используете MacBook, то напишите в консоли

Applications > Python3.* > Install Certificates.command
→ Ссылка