You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord机器人在新服务器无法注册斜杠命令,报Missing Access错误

Discord机器人跨服务器注册斜杠命令报错50001(Missing Access)解决指南

我在一台服务器上搭建的Discord机器人,通过以下代码加载comandos文件夹中的JS命令文件并注册斜杠命令,在原服务器运行完全正常:

//Load commands
Client.commands = new Discord.Collection();

fs.readdirSync("./comandos").forEach((commandfile) => {
    const command = require('./comandos/' + commandfile);
    Client.commands.set(command.data.name, command);
});

//Register commands
const REST = new Discord.REST().setToken(config.CLIENT_TOKEN);

(async () => {
    try{
        await REST.put(
            Discord.Routes.applicationGuildCommands(config.clientId, config.guildId),
            {
                body: Client.commands.map((cmd) => cmd.data.toJSON()),
            }
        )
    } catch (e){
      console.log(e);
    }
})();

命令文件的常规结构如下:

const Discord = require("discord.js");

module.exports = {
    // datos
    data: new Discord.SlashCommandBuilder()
    .setName("test")
    .setDescription("Comando de prueba.")
    //ejecucion
    execute: async (interaction) => {
        //mensaje
        interaction
        .reply("Has ejecutado el comando de prueba.")
        .catch(console.error);
    }
}

但将机器人部署到另一台服务器时,命令无法显示,且出现以下错误:

DiscordAPIError[50001]: Missing Access at handleErrors (C:\Users...@discordjs\rest\dist\index.js:727:13) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async SequentialHandler.runRequest (C:\Users...@discordjs\rest\dist\index.js:1128:23) at async SequentialHandler.queueRequest (C:\Users...@discordjs\rest\dist\index.js:959:14) at async _REST.request (C:\Users...@discordjs\rest\dist\index.js:1272:22)
at async C:\Users...\bot.js:36:9 { requestBody: { files: undefined, json: [ [Object], [Object], [Object], [Object] ] }, rawError: { message: 'Missing Access', code: 50001 }, code: 50001, status: 403, method: 'PUT', url: 'https://discord.com/api/v10/applications/1271441796953800794/guilds/1271149134589595683/commands' }

注:已为机器人配置applications.command、bot、Administrator权限,拥有目标服务器管理员权限,重启机器人、重新邀请均无效,原服务器无此问题。


排查与解决步骤

  • 确认邀请链接的权限参数完整
    重新生成邀请链接时,必须同时包含bot和applications.commands两个scope,正确的链接格式应包含:scope=bot+applications.commands,权限参数建议使用管理员权限的数字值permissions=8。很多时候重新邀请时容易遗漏applications.commands的scope,这是导致命令无法注册的常见原因。

  • 调整机器人角色的优先级
    在目标服务器的「角色」设置中,将机器人的角色拖动到所有成员角色的上方。如果机器人角色位置过低,可能会被下级角色的权限设置覆盖,导致无法正常注册和使用命令。同时检查所有频道的权限设置,确保机器人没有被禁止使用应用命令。

  • 验证Guild ID与Client ID的正确性
    核对代码中config.clientId和config.guildId的值,是否与目标服务器ID、机器人应用ID完全匹配。可以通过开启Discord开发者模式,右键服务器/机器人头像复制正确的ID,避免因ID错误导致请求发送到错误的资源路径。

  • 更新Discord.js到最新稳定版
    检查当前使用的Discord.js版本是否与API版本(报错中为v10)兼容,版本过低可能引发API请求不兼容问题。执行以下命令更新:

    npm update discord.js
    
  • 测试全局命令注册
    暂时将代码中的Discord.Routes.applicationGuildCommands(config.clientId, config.guildId)替换为Discord.Routes.applicationCommands(config.clientId),尝试注册全局命令。如果全局命令能正常显示,说明问题出在目标服务器的权限配置;如果仍报错,需检查机器人应用的令牌是否正确,或是否存在Discord平台级别的限制。

内容的提问来源于stack exchange,提问作者Raymond J.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 15:32:09