[英]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.