Discord.js 斜线命令名称无效

emr*_*ras 0 javascript node.js discord discord.js

我对discord.js 斜杠命令有疑问。

正如您在我的代码中看到的,我将名称设置为“Name”和“Age”,所以我不明白问题是什么。

这是我的错误:

error: (node:16004) UnhandledPromiseRejectionWarning: DiscordAPIError: Invalid Form Body 
options[0].name: Command name is invalid
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

const Discord = require('discord.js');
require("dotenv").config();
const client = new Discord.Client();

client.on('ready', async () => {
  console.log(`Logged in as ${client.user.tag}!`);

  const getApp = (guildid) => {
      const app = client.api.applications(client.user.id);
      if(guildid){
          app.guilds(guildid);
      }
      return app;
  }

  await getApp("842486032842358784").commands.post({
    data: {
        name: 'embed',
        description: 'Displays embed',
        options: [
            {
                name: 'Name',
                description: 'Your Name',
                required: true,
                type: 3
            },
            {
                name: 'Age',
                description: 'Your Age',
                required: false,
                type: 4
            }
        ]
    },
  })

  client.ws.on('INTERACTION_CREATE', async(interaction) => {
      const command = interaction.data.name.toLowerCase();
      const { name, options } = interaction.data;
      console.log(options);
      if(command === "embed"){
          reply(interaction, 'hi');
      }
  })

  const reply = (interaction, response) => {
    client.api.interactions(interaction.id, interaction.token).callback.post({
        data: {
            type: 4,
            data: {
                content: response,
            }
        }
    })
  }
});

client.login(process.env.TOKEN);
Run Code Online (Sandbox Code Playgroud)

小智 13

选项名称应全部小写,根据您的情况,将“Name”替换为“name”,将“Age”替换为“age”。那应该有效。代码如下:

const Discord = require('discord.js');
require("dotenv").config();
const client = new Discord.Client();

client.on('ready', async() => {
  console.log(`Logged in as ${client.user.tag}!`);

  const getApp = (guildid) => {
    const app = client.api.applications(client.user.id);
    if (guildid) {
      app.guilds(guildid);
    }
    return app;
  }

  await getApp("842486032842358784").commands.post({
    data: {
      name: 'embed',
      description: 'Displays embed',
      options: [{
          name: 'name',
          description: 'Your Name',
          required: true,
          type: 3
        },
        {
          name: 'age',
          description: 'Your Age',
          required: false,
          type: 4
        }
      ]
    },
  })

  client.ws.on('INTERACTION_CREATE', async(interaction) => {
    const command = interaction.data.name.toLowerCase();
    const {
      name,
      options
    } = interaction.data;
    console.log(options);
    if (command === "embed") {
      reply(interaction, 'hi');
    }
  })

  const reply = (interaction, response) => {
    client.api.interactions(interaction.id, interaction.token).callback.post({
      data: {
        type: 4,
        data: {
          content: response,
        }
      }
    })
  }
});

client.login(process.env.TOKEN);
Run Code Online (Sandbox Code Playgroud)