You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord机器人连接报错ClientConnectorCertificateError的解决咨询

解决Discord机器人SSL证书验证失败问题

问题原因

报错SSLCertVerificationError: unable to get local issuer certificate是因为本地系统缺少可信的SSL根证书,导致aiohttp无法验证Discord服务器的SSL证书有效性,进而无法建立安全连接。

解决方案

1. 临时调试方案:禁用SSL验证(仅测试用,禁止生产环境使用)

通过自定义aiohttp的TCP连接器跳过SSL验证,快速验证机器人逻辑是否正常:

修改后的完整代码:

import discord
from discord.ext import commands
from decouple import config
import aiohttp
from aiohttp import TCPConnector

# 读取环境变量与配置
BOT_TOKEN = config("BOT_TOKENA")
CHANNEL_ID = 1215073255233163286

if __name__ == "__main__":
    bot = commands.Bot(command_prefix="Angel ", intents=discord.Intents.all())

    @bot.event
    async def on_ready():
        print("Hello! BOT is ready")
        channel = bot.get_channel(CHANNEL_ID)
        if channel:
            await channel.send("BOT is ready!")

    # 创建禁用SSL验证的连接器
    connector = TCPConnector(ssl=False)
    bot.run(BOT_TOKEN, connector=connector)

2. 永久解决方案:修复系统SSL证书(推荐)

根据你的操作系统,安装或更新根证书:

  • Windows:打开「Internet选项」→「内容」→「证书」,导入Discord服务器的根证书;或直接安装系统更新,自动更新根证书库。
  • macOS:打开「钥匙串访问」导入根证书;或找到Python安装目录,运行Install Certificates.command脚本(比如/Applications/Python 3.11/Install Certificates.command)。
  • Linux:安装ca-certificates包并更新证书库:
    sudo apt-get install ca-certificates
    sudo update-ca-certificates
    

3. 自定义证书路径方案

如果系统证书库无法正常使用,可以手动指定可信证书文件:

import ssl
import discord
from discord.ext import commands
from decouple import config
from aiohttp import TCPConnector

BOT_TOKEN = config("BOT_TOKENA")
CHANNEL_ID = 1215073255233163286

# 加载自定义证书文件
ssl_context = ssl.create_default_context(cafile="/path/to/root_certificate.pem")
connector = TCPConnector(ssl=ssl_context)

if __name__ == "__main__":
    bot = commands.Bot(command_prefix="Angel ", intents=discord.Intents.all())

    @bot.event
    async def on_ready():
        print("Hello! BOT is ready")
        channel = bot.get_channel(CHANNEL_ID)
        if channel:
            await channel.send("BOT is ready!")

    bot.run(BOT_TOKEN, connector=connector)

证书文件可通过浏览器访问discord.com时,导出网站的根证书获取。

代码优化建议

你的原始代码存在重复导入、冗余变量定义(比如重复读取环境变量、无效的CHANNEL_ID2),建议清理后保持代码简洁,避免潜在问题。

内容的提问来源于stack exchange,提问作者KHaving

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 11:25:09