Python运行Discord机器人报Client缺少intents参数修复后无响应
问题根因
- 你遇到的
Client.__init__() missing 1 required keyword-only argument: 'intents'报错和编辑器无关,本质是discord.py版本差异导致的:v2.0及以上版本强制要求初始化Client时传入intents参数,你最开始在Replit、旧本地IDLE环境能正常运行,是因为当时环境安装的是v1.x版本的discord.py,后续本地环境依赖更新后,不管用什么编辑器运行都会触发这个报错。 - 改成
intents=discord.Intents.default()后机器人无法响应指令,是因为默认intents配置没有开启消息内容读取权限:v2版本后消息内容属于特权intent,不仅要在代码里显式开启,还要在Discord开发者后台手动打开对应开关,缺任意一步机器人都收不到用户发的普通聊天消息,自然无法响应指令。
完整修复步骤
- 先统一本地依赖版本,打开终端执行命令升级到最新稳定版discord.py,避免多版本冲突:
pip install -U discord.py
- 修改机器人初始化代码,显式开启消息内容权限:
intents = discord.Intents.default() intents.message_content = True # 响应普通聊天指令必须加这行 client = discord.Client(intents=intents)
- 登录Discord开发者后台,进入对应机器人的「Bot」设置页面,下拉找到「Privileged Gateway Intents」板块,打开
Message Content Intent的开关后保存设置。
提示:个人自用、加入服务器数不足100的机器人可以直接开启该权限,不需要官方审核;如果机器人服务器数超过100,需要先提交权限审核才能使用消息内容intent。
- 如果启动时仍有异常,逐一排查以下配置:
- 填入代码的机器人Token是否正确,有没有多余空格、漏写字符
- 机器人是否已经被正确邀请到测试服务器,邀请链接是否勾选了发送消息、读取消息历史等必要权限
- 测试服务器内是否给机器人分配了对应频道的查看、发送消息权限,不要把机器人的频道权限设为禁止
内容的提问来源于stack exchange,提问作者Deutrys
相关产品推荐
相关产品推荐

