【问题标题】:Discord Button failed Pop up on command不和谐按钮失败弹出命令
【发布时间】:2021-12-08 16:32:02
【问题描述】:

我正在尝试为我的 Discord 服务器创建一个菜单,并且我已经让 slash 命令正常工作,但是当我去拉菜单时,我得到:主菜单作为执行 slash 命令时不和谐的返回。

我使用以下代码来达到我所拥有的:

    //Remember to run " node deploy-commands.js " to register your commands!

const { SlashCommandBuilder } = require('@discordjs/builders');
const { MessageActionRow, MessageButton } = require('discord.js');


module.exports = {
    data: new SlashCommandBuilder()
        .setName('menu')
        .setDescription('Brings up the Main Menu'),
    async execute(interaction, client) {
        const row = new MessageActionRow()
                        .addComponents(
                                new MessageButton()
                                        .setCustomId('dice-bag')
                                        .setLabel('danger')
                                        .setStyle("DANGER"),
                                
                                new MessageButton()
                                        .setCustomId('spells')
                                        .setLabel('primary')
                                        .setStyle("PRIMARY"),
                                        
                                new MessageButton()
                                        .setCustomId('inventory')
                                        .setLabel('Success')
                                        .setStyle("SUCCESS"),
                        );
                        await interaction.reply({content: 'Main menu,', components: [row]})
    },
};

我觉得我需要以某种方式嵌入消息,但我不是 100% 确定如何。我很确定我可能需要添加以下内容:

await interaction.reply({content: 'Main menu,', components: [row]})

我很确定 components: [row]}) 是错误的,但我不知道应该用什么代替它。每当我尝试修复它时,我都会收到有关 MessageActionRow 操作行需要 NEW 的错误。

感谢您的帮助!

【问题讨论】:

  • compents 错了,显然是“组件”的拼写错误。您能否编辑您的问题以包含您尝试过的代码,这些代码让您收到有关MessageActionRow“需要新”的错误?这很可能比您问题中的当前代码更接近正确答案。
  • 这只是我愚蠢的手指打字太快的情况,一旦我做了那个呼叫更改,它就像一个魅力。谢谢@Cannicide

标签: javascript button menu discord.js bots


【解决方案1】:

注意!这是假设您使用的是 Discord.js v13.2.0。


根据文档,<MessageActionRow>.addComponents(...) 需要 ArrayMessageActionRowComponentResolveables。这看起来像这样:

<MessageActionRow>.addComponents([
new MessageButton().setValue("option1").setStyle("PRIMARY"),
new MessageButton().setValue("option2").setStyle("DANGER")
]);

这里要注意的重要一点是大括号的使用 ([])。在 JavaScript 中,大括号表示一个数组。在您的代码中,您缺少大括号。

// DON'T do this!
<MessageActionRow>.addComponents(new MessageButton, new MessageButton);

// DO this!
<MessageActionRow>.addComponents([ new MessageButton, new MessageButton ]);

这样,您的代码并没有太大的不同。您所要做的就是添加大括号。

<MessageActionRow>.addComponents([
new MessageButton()
.setCustomId('dice-bag')
.setLabel('danger')
.setStyle("DANGER"),

new MessageButton()
.setCustomId('spells')
.setLabel('primary')
.setStyle("PRIMARY"),
                                        
new MessageButton()
.setCustomId('inventory')
.setLabel('Success')
.setStyle("SUCCESS")
]);

【讨论】:

  • 我需要牙套有什么原因吗?它正在发布没有它们的按钮,我只是为了学习而要求。
  • 大括号表示一个数组,有时,函数可能需要它们。
猜你喜欢
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 2020-07-13
  • 2020-09-26
  • 2021-10-05
  • 2021-06-30
  • 2021-07-21
相关资源
最近更新 更多