斜杠命令仅适用于 1 个公会 ID

Slash commands only available in 1 guild ID

我最近学习了 discordjs 指南中的斜杠命令教程。一切正常,但问题是我无法在超过 1 个服务器中使用斜线命令,因为我手动输入了公会 ID,并且在机器人准备就绪时无法找到获取公会 ID 的方法。这是代码:

const clientID = '942177936553959464';
const guildID = '936781831037157426';

for (const file of commandFiles) {
    const command = require(`./commands/${file}`);
    commands.push(command.data.toJSON());
}

(async () => {
    try {
        console.log('Started refreshing application (/) commands.');

        await rest.put(
            Routes.applicationGuildCommands(clientID, guildID), // Error is at guildID, as it is not getting the actual guilds ID, just the one I set for testing.
            { body: commands },
        );

        console.log('Successfully reloaded application (/) commands.');
    } catch (error) {
        console.error(error);
    }
})();

您注册的方式是 guild-specific 注册斜杠命令的方式。您可以选择 2 条路线。 首先 - 拥有一组公会 ID 并遍历它们并为每个公会注册。这样的东西会很好

const clientID = "942177936553959464";
const guilds = ["id1", "id2", "id3"];
guilds.forEach((guildID) => {
    // Register the slash commands here
});

其次 - 全局注册斜杠命令(适用于所有公会)。请注意全局命令需要一些时间来缓存并由 discord API.

提供

https://discordjs.guide/interactions/registering-slash-commands.html#global-commands

注意 - 当机器人处于开发阶段而非生产阶段时,应遵循第一种方法