繁体   English   中英

Discord.JS - 多按钮更新

[英]Discord.JS - Multiple Button Updating

我嵌入了 5 个默认为绿色的按钮,单击其中一个会将其变为红色,就像打开和关闭开关一样。

我的问题是如何更改一个按钮的样式,同时将其保持在同一行中。

这是我在下面创建的按钮行,

const roleSelectionRow = new Discord.MessageActionRow()
        .addComponents(
            new Discord.MessageButton()
                .setCustomId('rustUpdates')
                .setLabel('Rust')
                .setStyle('SUCCESS'),
            new Discord.MessageButton()
                .setCustomId('gmodUpdates')
                .setLabel('Garrys Mod')
                .setStyle('SUCCESS'),
            new Discord.MessageButton()
                .setCustomId('minecraftUpdates')
                .setLabel('Minecraft')
                .setStyle('SUCCESS'),
            new Discord.MessageButton()
                .setCustomId('fivemUpdates')
                .setLabel('FiveM')
                .setStyle('SUCCESS'),
            new Discord.MessageButton()
                .setCustomId('arma3Updates')
                .setLabel('Arma 3')
                .setStyle('SUCCESS')
        );

这是我的interactionCreate事件(请忽略我只是想在我精简它并使其变得更好之前让它工作的混乱)

        client.on('interactionCreate', async (interaction) => {
        if (!interaction.isButton()) {
            return null
        }

        if (interaction.customId === 'rustUpdates') {
            console.log(interaction.customId.toString())
            if (interaction.member.roles.cache.has(Rust.id)) {
                await interaction.member.roles.remove(Rust)
            } else if (!interaction.member.roles.cache.has(Rust.id)) {
                await interaction.member.roles.add(Rust)
            }
        }
        if (interaction.customId === 'gmodUpdates') {
            console.log(interaction.customId.toString())
            if (interaction.member.roles.cache.has(GarrysMod.id)) {
                await interaction.member.roles.remove(GarrysMod)
            } else if (!interaction.member.roles.cache.has(GarrysMod.id)) {
                await interaction.member.roles.add(GarrysMod)
            }
        }
        if (interaction.customId === 'minecraftUpdates') {
            console.log(interaction.customId.toString())
            if (interaction.member.roles.cache.has(Minecraft.id)) {
                await interaction.member.roles.remove(Minecraft)
            } else if (!interaction.member.roles.cache.has(Minecraft.id)) {
                await interaction.member.roles.add(Minecraft)
            }
        }
        if (interaction.customId === 'fivemUpdates') {
            console.log(interaction.customId.toString())
            if (interaction.member.roles.cache.has(FiveM.id)) {
                await interaction.member.roles.remove(FiveM)
            } else if (!interaction.member.roles.cache.has(FiveM.id)) {
                await interaction.member.roles.add(FiveM)
            }
        }
        if (interaction.customId === 'arma3Updates') {
            console.log(interaction.customId.toString())
            if (interaction.member.roles.cache.has(Arma3.id)) {
                await interaction.member.roles.remove(Arma3)
            } else if (!interaction.member.roles.cache.has(Arma3.id)) {
                await interaction.member.roles.add(Arma3)
            }
        }
        await interaction.update({components: [roleSelectionRow, serverJoinRow]})
    })

据我所知,没有直接的updating / editing按钮的方法,就像消息或嵌入按钮一样,这就是我至少被D.JS discord 服务器中的一些人告诉过的。

任何人都对我如何使这项工作有任何可能的想法? 谢谢

多亏了MrMythical ,我才能够把它修好,让它像拨动开关一样工作。 请参阅下面更新的代码,了解其他遇到此类问题的人。

        client.on('interactionCreate', async (interaction) => {
        if (!interaction.isButton()) {
            return null
        }

        if (interaction.customId === 'rustUpdates') {
            console.log(interaction.customId.toString())
            if (interaction.member.roles.cache.has(Rust.id)) {
                serverGameUpdates.components[0].setStyle('SUCCESS')
                await interaction.member.roles.remove(Rust)
            } else if (!interaction.member.roles.cache.has(Rust.id)) {
                serverGameUpdates.components[0].setStyle('DANGER')
                await interaction.member.roles.add(Rust)
            }
        }
        if (interaction.customId === 'gmodUpdates') {
            console.log(interaction.customId.toString())
            if (interaction.member.roles.cache.has(GarrysMod.id)) {
                serverGameUpdates.components[1].setStyle('SUCCESS')
                await interaction.member.roles.remove(GarrysMod)
            } else if (!interaction.member.roles.cache.has(GarrysMod.id)) {
                serverGameUpdates.components[1].setStyle('DANGER')
                await interaction.member.roles.add(GarrysMod)
            }
        }
        if (interaction.customId === 'minecraftUpdates') {
            console.log(interaction.customId.toString())
            if (interaction.member.roles.cache.has(Minecraft.id)) {
                serverGameUpdates.components[2].setStyle('SUCCESS')
                await interaction.member.roles.remove(Minecraft)
            } else if (!interaction.member.roles.cache.has(Minecraft.id)) {
                serverGameUpdates.components[2].setStyle('DANGER')
                await interaction.member.roles.add(Minecraft)
            }
        }
        if (interaction.customId === 'fivemUpdates') {
            console.log(interaction.customId.toString())
            if (interaction.member.roles.cache.has(FiveM.id)) {
                serverGameUpdates.components[3].setStyle('SUCCESS')
                await interaction.member.roles.remove(FiveM)
            } else if (!interaction.member.roles.cache.has(FiveM.id)) {
                serverGameUpdates.components[3].setStyle('DANGER')
                await interaction.member.roles.add(FiveM)
            }
        }
        if (interaction.customId === 'arma3Updates') {
            console.log(interaction.customId.toString())
            if (interaction.member.roles.cache.has(Arma3.id)) {
                serverGameUpdates.components[4].setStyle('SUCCESS')
                await interaction.member.roles.remove(Arma3)
            } else if (!interaction.member.roles.cache.has(Arma3.id)) {
                serverGameUpdates.components[4].setStyle('DANGER')
                await interaction.member.roles.add(Arma3)
            }
        }
        await interaction.update({components: [serverGameUpdates, serverDiscordLinks]})
    })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM