【问题标题】:How to disable button once it is clicked in Discord.js 13在 Discord.js 13 中单击按钮后如何禁用按钮
【发布时间】:2021-10-20 20:40:18
【问题描述】:

我怎样才能做到一旦用户点击消息中的一个按钮,该按钮就会被禁用,而其他按钮仍然可以点击?我正在使用 Discord.js v13.1.0,这是我迄今为止能够写的:

const { MessageActionRow, MessageButton } = require('discord.js');

let row = new MessageActionRow()
    .addComponents(
        but_1 = new MessageButton()
            .setCustomId('id_1')
            .setLabel('Button 1')
            .setStyle('SECONDARY'),
        but_2 = new MessageButton()
            .setCustomId('id_2')
            .setLabel('Button 2')
            .setStyle('SECONDARY')
    );

interaction.reply({ content: "Click a button", components: [row] })

我尝试创建消息组件收集器来检查单击的按钮的 id 并编辑按钮,但结果.addComponents() 只是添加了另一个按钮而不是编辑它。这就是我所做的:

const filter = i => i.customId === 'id_1' && i.user.id === interaction.user.id;

const collector = interaction.channel.createMessageComponentCollector({ filter, time: 15000 });

collector.on('collect', async i => {
    if (i.customId === 'id_1') {
        row.addComponents(
            but_1.setLabel('Click Registered!')
                .setCustomId('id_1_clicked')
                .setDisabled(true)
       )
       interaction.editReply({ content: "Click a button", components: [row] });
    }
});

【问题讨论】:

    标签: javascript node.js discord.js


    【解决方案1】:

    .addComponents() 只会添加到现有组件中。由于组件是一个数组,您需要更改row.components[0].setDisabled(true)(用于but_1)和row.components[1].setDisabled(true)(用于but_2)并使用更改后的行MessageActionRow 编辑回复。

    collector.on('collect', async i => {
        if (i.customId === 'id_1') {
            row.components[0].setDisabled(true) //disables but_1
        }
        if (i.customId === 'id_2') {
            row.components[1].setDisabled(true) //disables but_2
        }
        interaction.editReply({ content: "Click a button", components: [row] });
    })
    

    【讨论】:

    • 感谢您的帮助。经过一番研究,我发现有一个.spliceComponents() 方法可以解决这个问题。但是按照您提到的方式进行操作要容易得多
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 2019-10-25
    • 2011-01-20
    相关资源
    最近更新 更多