Reputation: 131
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
Upvotes: 12
Views: 80707
Reputation: 52
I have the same problem. I tried updating the root certificate and even downloading the crt certificate file, but it still didn't solve it. I think it's a code problem, not a system problem So I used the following command to find the files currently read by SSL by default and check the corresponding files:
import ssl
paths = ssl.get_default_verify_paths()
print(paths)
I found that there was no corresponding pem file in this directory, so I modified it through export and pointed it to the correct file, which successfully solved the problem.
export SSL_CERT_FILE=/etc/pki/tls/cert.pem
export REQUESTS_CA_BUNDLE=/etc/pki/tls/cert.pem
Upvotes: 0
Reputation: 41
Use certifi along with urllib3
import urllib3
import certifi
url = 'https://blablablabla.com'
ssl_certs = certifi.where()
http = urllib3.PoolManager(ca_certs=ssl_certs)
resp = http.request('GET', url)
print(resp.status)
Upvotes: 0
Reputation: 310
I got the same error, but I fixed it by going to my Applications folder in my mac, going to python 3.9, and clicking on the install certificate file. It opened the terminal then it downloaded the certificate files.
Upvotes: 14
Reputation: 1
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
Upvotes: 0
Reputation: 170
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.
Upvotes: 0
Reputation: 4394
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
Upvotes: 3
Reputation: 1
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."
Upvotes: 0
Reputation: 21
Run the below script(Works For Mac) in the python directory,
install Certificate.command
Upvotes: 2
Reputation: 350
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.
Upvotes: 0
Reputation: 1400
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
Upvotes: 28