接下来; https://discordjs.guide/creating-your-bot/creating-commands.html#command-deployment-script
我正在尝试运行
node deploy-commands.js
将我的命令注册到单个公会,但出现以下错误。
C:\Users\\\\hello-world-discord-bot>node deploy-commands.js
DiscordAPIError[50001]: Missing Access
at SequentialHandler.runRequest (C:\\\\\hello-world-discord-bot\node_modules\@discordjs\rest\dist\lib\handlers\SequentialHandler.js:198:23)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async SequentialHandler.queueRequest (C:\\\\\hello-world-discord-bot\node_modules\@discordjs\rest\dist\lib\handlers\SequentialHandler.js:99:20)
at async C:\\\\\hello-world-discord-bot\deploy-commands.js:17:3 {
rawError: { message: 'Missing Access', code: 50001 },
code: 50001,
status: 403,
method: 'put',
url: 'https://discord.com/api/v9/applications/877359061669118003/guilds/447125601757691915/commands'
}
我尝试删除机器人并通过开发人员 Web 控制台重新授予它权限,然后再重新添加它。我检查并重新添加了
token
clientId
和 guildId
,每次都会收到相同的错误消息。我可以看到它没有获得访问权限,但我不知道还能从哪里授予访问权限。
我的
deploy-commands.js
看起来像这样:
{
"clientId": "123456789012345678",
"guildId": "876543210987654321",
"token": "my-token-goes-here"
}
您是否已确保在 Discord 开发者门户中为您的机器人在 OAuth2 设置的范围部分中检查了“applications.commands”范围?
jh316 的答案适用于额外的上下文,对于我们菜鸟来说,选中该框还需要复制 URL,将其粘贴到浏览器中,以便您可以访问身份验证页面,在该页面中您可以选择授权将应用到的 Discord 服务器。 ..然后单击“授权”以完成授权。然后运行deploy-commands.js脚本即可成功运行。
虽然我已经检查了'applications.commands'它仍然对我不起作用。
解决方案很简单, 当我应该复制 server's id 时,我却复制了文本通道的 id。
我偶然发现了这个错误,就我而言,问题是 guildId 是一个数字而不是字符串。
如果有人有相关问题=> 1/ 检查您的开发者页面是否选中了 OAuth2 设置中的插件“applications.commands”! 2/如果仍然不起作用,只需重新邀请机器人并获得“使用斜线命令”权限即可!
当我遇到这个问题时,我更改了测试服务器,但没有更改
guildId
属性,愚蠢的错误,但我花了很多时间来解决它。