Heroku部署Discord机器人echo斜杠命令报Missing Access错误如何解决
错误原因
DiscordAPIError: Missing Access 报错核心原因是你的Discord机器人没有足够权限在目标服务器创建斜杠命令,按照以下步骤逐一排查即可解决:
- 检查机器人邀请链接的scope参数
邀请机器人进服务器时,链接的scope参数必须同时包含bot和applications.commands两个值,仅配置botscope时机器人没有斜杠命令操作权限,测试阶段可以直接用以下格式的邀请链接:https://discord.com/oauth2/authorize?client_id=你的机器人客户端ID&permissions=8&scope=bot%20applications.commands
这里permissions=8是给机器人管理员权限,上线后可以按需收窄到仅需要的权限。 - 检查开发者门户配置
进入Discord开发者门户对应的应用页面,切换到「Bot」选项卡,在Privileged Gateway Intents板块确认开启了必要的权限开关,避免网关鉴权失败。 - 确认服务器ID与机器人权限
首先核对代码中bot.guilds.cache.get('server id number')填写的服务器ID是否正确,再确认机器人已经加入该服务器,且机器人的身份组拥有「管理服务器」或「创建应用命令」权限。 - 补充错误捕获优化代码
可以给命令创建逻辑增加错误捕获,方便定位后续问题,优化后代码参考://slash command to echo bot.on("ready", async () => { bot.user.setPresence({ activities: [{ name: "Tedi", type: "WATCHING"}] }); console.log("bot已上线"); const data = { name: "echo", description: "Echo your text", options: [{ name: "text", type: "STRING", description: "The user input", required: true, }], }; try { // 测试用服务器专属命令,同步速度快 const command = await bot.guilds.cache.get('替换为实际服务器ID')?.commands.create(data); // 如果需要创建全局生效命令,替换为下面这行即可,全局命令同步最多需要1小时 // const command = await bot.application?.commands.create(data); console.log('斜杠命令创建成功', command.name); } catch (err) { console.error('斜杠命令创建失败', err); } })
内容的提问来源于stack exchange,提问作者TheoChow
相关产品推荐
相关产品推荐

