discord.py报错Event loop is closed及PrivilegedIntentsRequired如何修复
问题原因
核心报错为discord.errors.PrivilegedIntentsRequired,是因为你的代码启用了全部Discord网关意图,其中包含的特权意图(成员访问、消息内容访问等)属于Discord限制的敏感权限,必须在开发者后台手动开启后才能正常调用,你当前未开启对应权限所以触发报错,后续的RuntimeError: Event loop is closed是主报错引发的连带异常,无需单独处理。
修复方案
你可以根据自己的使用场景二选一即可:
方案一:在开发者后台开启对应特权意图(适合需要用到全功能的场景)
操作步骤:
- 打开Discord开发者后台,找到你当前机器人对应的应用
- 进入「Bot」设置页,下拉找到Privileged Gateway Intents分类
- 把分类下的三个开关(Presence Intent、Server Members Intent、Message Content Intent)全部打开保存即可
- 保存后重新运行代码即可正常启动
方案二:代码侧关闭不需要的特权意图(适合简单功能场景,无需修改后台设置)
如果你当前的机器人只需要基础的指令响应功能,不需要读取成员列表、用户状态这类敏感权限,可以直接修改代码里的意图配置,替换原来的client = commands.Bot(...)行即可:
intents = discord.Intents.default() intents.message_content = True # 需要响应前缀指令就保留这行,不需要可以直接删除 client = commands.Bot(command_prefix = ".", intents = intents)
额外代码优化提示
你代码里的@client.command(pass_context = True)可以去掉pass_context = True参数,discord.py v2.x之后该参数已经默认开启,不需要手动声明,不影响运行但可以简化代码。
内容的提问来源于stack exchange,提问作者bladehearme
相关产品推荐
相关产品推荐

