Discord.py初始化Bot实例提示缺少必填intents参数报错
问题复现
触发报错的代码:
client = commands.Bot(command_prefix='!')
运行抛出的错误信息:
TypeError: init() missing 1 required keyword-only argument: 'intents'
报错原因
discord.py 自 2.0 正式版本开始,将 intents 参数设为了 commands.Bot 初始化时的必填关键字参数,1.x 版本无此强制要求。之前可正常运行的代码突然触发该报错,是因为运行环境中的 discord.py 依赖被自动升级到了 2.0 及以上版本。
解决方案
- 方案一(推荐,适配v2版本规范):
- 先进入Discord开发者平台对应机器人的设置页,在「Bot」分类下的「Privileged Gateway Intents」板块,按需开启所需的权限开关:如果要使用前缀指令响应普通用户消息,必须开启
Message Content Intent;如果需要监听服务器成员加入、退出等事件,需要开启Server Members Intent。 - 修改Bot初始化代码,传入配置完成的intents参数:
- 先进入Discord开发者平台对应机器人的设置页,在「Bot」分类下的「Privileged Gateway Intents」板块,按需开启所需的权限开关:如果要使用前缀指令响应普通用户消息,必须开启
import discord from discord.ext import commands # 加载默认基础intents配置 intents = discord.Intents.default() # 开启消息内容读取权限,前缀指令必开 intents.message_content = True # 如需监听成员相关事件,取消注释下一行 # intents.members = True client = commands.Bot(command_prefix='!', intents=intents)
- 方案二(临时兼容方案,不推荐长期使用):如果暂时不想适配v2版本规范,可以将discord.py降级到1.x系列最终稳定版本,执行如下命令:
pip install discord.py==1.7.3
提示:Discord官方已逐步停止对旧版网关接口的支持,长期运行机器人建议尽快适配v2版本的intents规范,避免后续出现功能不可用的问题。
内容的提问来源于stack exchange,提问作者KonstTheoGR
相关产品推荐
相关产品推荐

