消息 Select 菜单有效,但它仍然提供 "this interaction failed"

Message Select menu works but it still gives "this interaction failed"

我正在使用消息 select 菜单为我的机器人制作帮助命令。我让整个工作正常,但只出现 1 个问题,它说“此交互失败”,即使它有效。我可以忽略它并使用该机器人,但我不喜欢它每次都显示的事实,如果有人能告诉我如何修复它会很好。这是代码

  let menu = new Discord.MessageSelectMenu()
    .setCustomId("menu")
    .setPlaceholder("Help commands...")
    .addOptions(
      [
        {
          label: "Fun commands",
          description: "Commands to timepass",
          value: "fun",
        },
        {
          label: "Server commands",
          description: "Commands to get info about server",
          value: "serverinfo",
        },
        {

          label: "DANGEROUS COMMANDS",
          description: "Commands to be abused",
          value: "abuseanddanger",
        },
        {
          label: "User commands",
          description: "Commands to get info about user",
          value: "usercommands",
        },
        {
          label: "Bot commands",
          description: "Commands to get info about bot",
          value: "botinfo",
        }, {
          label: "Utility commands",
          description: "Commands to avoid manual work",
          value: "utility",
        },
        {
          label: "Additional commands",
          description: "Commands not for use for functionality ",
          value: "extra",
        }
      ]
    )``` 

```if (message.content.toLowerCase() === prefix + "help") {
    let row = new Discord.MessageActionRow()
      .addComponents(menu)
    let helpEmb = new Discord.MessageEmbed()
      .setTitle("Shadow Help")
      .setColor("GREEN")
      .setImage("https://i.imgur.com/MImCgPp.png")
    message.channel.send({ embeds: [helpEmb], components: [row] }).then((msg) => {
      let collector = message.channel.createMessageComponentCollector({ componentType: "SELECT_MENU", customId: "menu" });
      collector.on("collect", (collected) => {
        let value = collected.values[0]
        if (value === "fun") {
          msg.edit({ embeds: [funEmb] })
        }
        if (value === "serverinfo") {
          msg.edit({ embeds: [serverEmb] })
        }
        if (value === "abuseanddanger") {
          msg.edit({ embeds: [abuseEmb] })
        }
        if (value === "usercommands") {
          msg.edit({ embeds: [userEmb] })
        }
        if (value === "botinfo") {
          msg.edit({ embeds: [botEmb] })
        }
        if (value === "extra") {
          msg.edit({ embeds: [extraEmb] })
        }
        if (value === "utility") {
          msg.edit({ embeds: [utilityEmb] })
        }
      })
    })
    let abuseEmb = new Discord.MessageEmbed()
      .setTitle("DANGEROUS COMMANDS")
      .setColor("RED")
      .setDescription(
        "These commands are dangerous and can be abused. Use them at your own risk."
      )
    let botEmb = new Discord.MessageEmbed()
      .setTitle("Bot commands")
      .setColor("BLUE")
      .setDescription(
        "Commands of bot ."
      )
    let extraEmb = new Discord.MessageEmbed()
      .setTitle("Additional commands")
      .setColor("YELLOW")
      .setDescription(
        "Some additional commands")
    let funEmb = new Discord.MessageEmbed()
      .setTitle("Fun commands")
      .setColor("YELLOW")
      .setDescription("Fun commands")
    let serverEmb = new Discord.MessageEmbed()
      .setTitle("Server commands")
      .setColor("BLUE")
      .setDescription("General commands of server")
    let userEmb = new Discord.MessageEmbed()
      .setTitle("User commands")
      .setColor("YELLOW")
      .setDescription("User commands")
    let utilityEmb = new Discord.MessageEmbed()
      .setTitle("Utility commands")
      .setColor("ORANGE")
      .setDescription("Utility commands")
  }

})

错误发生是因为当您点击MessageSelectMenu时,它没有被回复。所以你所要做的就是将你的代码更改为:

let menu = new Discord.MessageSelectMenu()
    .setCustomId("menu")
    .setPlaceholder("Help commands...")
    .addOptions(
      [
        {
          label: "Fun commands",
          description: "Commands to timepass",
          value: "fun",
        },
        {
          label: "Server commands",
          description: "Commands to get info about server",
          value: "serverinfo",
        },
        {

          label: "DANGEROUS COMMANDS",
          description: "Commands to be abused",
          value: "abuseanddanger",
        },
        {
          label: "User commands",
          description: "Commands to get info about user",
          value: "usercommands",
        },
        {
          label: "Bot commands",
          description: "Commands to get info about bot",
          value: "botinfo",
        }, {
          label: "Utility commands",
          description: "Commands to avoid manual work",
          value: "utility",
        },
        {
          label: "Additional commands",
          description: "Commands not for use for functionality ",
          value: "extra",
        }
      ]
    )``` 

```if (message.content.toLowerCase() === prefix + "help") {
    let row = new Discord.MessageActionRow()
      .addComponents(menu)
    let helpEmb = new Discord.MessageEmbed()
      .setTitle("Shadow Help")
      .setColor("GREEN")
      .setImage("https://i.imgur.com/MImCgPp.png")
    message.channel.send({ embeds: [helpEmb], components: [row] }).then((msg) => {
      let collector = message.channel.createMessageComponentCollector({ componentType: "SELECT_MENU", customId: "menu" });
      collector.on("collect", (collected) => {
        let value = collected.values[0]
        if (value === "fun") {
          collected.update({ embeds: [funEmb] })
        }
        if (value === "serverinfo") {
          collected.update({ embeds: [serverEmb] })
        }
        if (value === "abuseanddanger") {
          collected.update({ embeds: [abuseEmb] })
        }
        if (value === "usercommands") {
          collected.update({ embeds: [userEmb] })
        }
        if (value === "botinfo") {
          collected.update({ embeds: [botEmb] })
        }
        if (value === "extra") {
          collected.update({ embeds: [extraEmb] })
        }
        if (value === "utility") {
          collected.update({ embeds: [utilityEmb] })
        }
      })
    })
    let abuseEmb = new Discord.MessageEmbed()
      .setTitle("DANGEROUS COMMANDS")
      .setColor("RED")
      .setDescription(
        "These commands are dangerous and can be abused. Use them at your own risk."
      )
    let botEmb = new Discord.MessageEmbed()
      .setTitle("Bot commands")
      .setColor("BLUE")
      .setDescription(
        "Commands of bot ."
      )
    let extraEmb = new Discord.MessageEmbed()
      .setTitle("Additional commands")
      .setColor("YELLOW")
      .setDescription(
        "Some additional commands")
    let funEmb = new Discord.MessageEmbed()
      .setTitle("Fun commands")
      .setColor("YELLOW")
      .setDescription("Fun commands")
    let serverEmb = new Discord.MessageEmbed()
      .setTitle("Server commands")
      .setColor("BLUE")
      .setDescription("General commands of server")
    let userEmb = new Discord.MessageEmbed()
      .setTitle("User commands")
      .setColor("YELLOW")
      .setDescription("User commands")
    let utilityEmb = new Discord.MessageEmbed()
      .setTitle("Utility commands")
      .setColor("ORANGE")
      .setDescription("Utility commands")
  }

})