Py-cord开发的Discord机器人上线后无法响应命令问题求助
Py-cord机器人在线但命令无响应故障排查
故障原因
- 未配置网关意图(Intents):Py-cord最新版本默认不开启消息内容读取权限,代码未显式声明对应意图的情况下,机器人无法接收用户发送的消息内容,无法触发前缀命令。
- 未在开发者后台开启特权意图开关:Message Content Intent(消息内容意图)属于Discord规定的特权网关意图,必须在开发者后台手动开启后才能生效,仅在代码里配置不会生效。
- 机器人基础权限缺失:邀请机器人加入服务器时未勾选查看频道、发送消息、读取消息历史权限,即使识别到命令也无法发送响应。
- 命令输入格式不匹配:使用全角中文感叹号
!作为前缀,或者前缀与命令名之间加了多余空格,和代码中配置的半角!前缀规则不匹配,无法触发命令。
解决步骤
- 开启开发者后台特权开关
- 登录Discord开发者平台,进入对应机器人的应用管理页
- 切换到「Bot」设置页,下拉找到「Privileged Gateway Intents」分区
- 打开Message Content Intent对应的开关,保存设置
- 修改代码补充Intents配置
原代码缺少Intents声明,调整后可正常运行的代码如下:import discord from discord.ext import commands # 初始化意图配置,开启消息内容读取权限 intents = discord.Intents.default() intents.message_content = True # 初始化机器人实例时传入intents参数 bot = commands.Bot(command_prefix='!', intents=intents) @bot.command() async def test(ctx): await ctx.send("Test") bot.run("替换为你的机器人实际Token") - 校验服务器内机器人权限
- 重新生成机器人邀请链接时,勾选View Channels、Send Messages、Read Message History三个基础权限
- 进入服务器的角色设置,找到机器人对应的角色,确认以上三个权限处于开启状态,没有被频道权限覆盖
- 确认命令输入格式
- 切换到英文输入法输入前缀
!,不要使用中文全角感叹号 - 前缀和命令名之间不要加空格,正确触发命令的输入格式为
!test
- 切换到英文输入法输入前缀
内容的提问来源于stack exchange,提问作者RunNow
相关产品推荐
相关产品推荐

