3
votes

I'm using Pycharm and python 3.8 and latest version of discord. I tried to run this script but got this error. Can anyone help?

import discord

TOKEN = 'xxxxx'

client = discord.Client()

@client.event
async def on_message(message):
    # we do not want the bot to reply to itself
    if message.author == client.user:
        return

    if message.content.startswith('!hello'):
        msg = 'Hello {0.author.mention}'.format(message)
        await client.send_message(message.channel, msg)

@client.event
async def on_ready():
    print('Logged in as')
    print(client.user.name)
    print(client.user.id)
    print('------')

client.run(TOKEN)

------ error below -------

/Users/mellie/PycharmProjects/Dominations/venv/bin/python /Users/mellie/PycharmProjects/Dominations/Domi.py Traceback (most recent call last): File "/Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/aiohttp/connector.py", line 936, in _wrap_create_connection return await self._loop.create_connection(*args, **kwargs) # type: ignore # noqa File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/asyncio/base_events.py", line 1042, in create_connection transport, protocol = await self._create_connection_transport( File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/asyncio/base_events.py", line 1072, in _create_connection_transport await waiter File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/asyncio/sslproto.py", line 529, in data_received ssldata, appdata = self._sslpipe.feed_ssldata(data) File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/asyncio/sslproto.py", line 189, in feed_ssldata self._sslobj.do_handshake() File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/ssl.py", line 944, in do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)

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

Traceback (most recent call last): File "/Users/mellie/PycharmProjects/Dominations/Domi.py", line 24, in client.run(TOKEN) File "/Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/discord/client.py", line 640, in run return future.result() File "/Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/discord/client.py", line 621, in runner await self.start(*args, **kwargs) File "/Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/discord/client.py", line 584, in start await self.login(*args, bot=bot) File "/Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/discord/client.py", line 442, in login await self.http.static_login(token.strip(), bot=bot) File "/Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/discord/http.py", line 256, in static_login data = await self.request(Route('GET', '/users/@me')) File "/Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/discord/http.py", line 160, in request async with self.session.request(method, url, **kwargs) as r: File "/Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/aiohttp/client.py", line 1012, in __aenter self._resp = await self._coro File "/Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/aiohttp/client.py", line 480, in _request conn = await self._connector.connect( File "/Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/aiohttp/connector.py", line 523, in connect proto = await self._create_connection(req, traces, timeout) File "/Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/aiohttp/connector.py", line 858, in _create_connection _, proto = await self._create_direct_connection( File "/Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/aiohttp/connector.py", line 1004, in _create_direct_connection raise last_exc File "/Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/aiohttp/connector.py", line 980, in _create_direct_connection transp, proto = await self._wrap_create_connection( File "/Users/mellie/PycharmProjects/Dominations/venv/lib/python3.8/site-packages/aiohttp/connector.py", line 938, in _wrap_create_connection raise ClientConnectorCertificateError( aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host discordapp.com:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)')]

Process finished with exit code 1

8
how you are accessing the internet ? If you are using some public wifi make sure the discord is not blocked by the host firewall. Thanksvaku
it's the home internet.user12565514

8 Answers

10
votes

This github issue here. Says:

Basically navigate to your Applications/Python 3.6/ folder and double click the Install Certificates.command.

Try running this same program on 3.6 and run the install certificates command. This is likely to solve your issue

4
votes

I got the same error, but I fixed it by going to my Applications folder in my mac, then went to python 3.9, then i clicked on the install certificate file, then it opened the terminal then it downloaded the certificate files.

1
votes

Run the below script(Works For Mac) in the python directory,

install Certificate.command
1
votes

Add ssl=true&ssl_cert_reqs=CERT_NONE to your MongoDB URI like this

>>> uri = 'mongodb://example.com/?ssl=true&ssl_cert_reqs=CERT_NONE'
>>> client = pymongo.MongoClient(uri)

Most importantly the ssl_cert_reqs=CERT_NONE

Visit https://api.mongodb.com/python/current/examples/tls.html for more information

0
votes

You don't use python 3.6 so the answer above is not the right one. I had the same problem and I figured out you could just use Anaconda, create an enviroment, install discord.py to the enviroment and since you use PyCharm, use the enviroment as the interpreter in it.

0
votes

Its possible that this is an issue on discord's side, with no possible fix for the time being. I am running into the same problem with the RedBot framework. They recently stated that the "issue is related to Discord's root certificate and there is currently no recommended fix available."

0
votes

I was getting this error while doing some scraping on a Linux distro:

requests.exceptions.SSLError: HTTPSConnectionPool(host='api.scraperapi.com', port=XX): Max retries exceeded with url: /account?api_key=MY_KEY (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)')))

I'm using Spyder with Python 3.8 and pyenv. For me, simply updating pip certificates solved this issue:

pip3 install --upgrade certifi

I was NOT using discord, but I thought others with this "1108" issue might want to see this potentially easy solution. Especially those on Linux. When I was searching for a solution, it seemed like this was a more common issue for Mac users.

0
votes

The real reason is the python library is not able to find the intermediate CA in the certificate chain.

For DISCORD:

DIGICERT BALTIMORE ROOT(Root) -> Cloudflare INC ECC CA-3 (Intermediate) -> sni.cloudflaressl.com

this is the certificate chain.

All the systems will have the root but not the intermediate. All you have to do is manually install the intermediate CA in your ca store