【发布时间】:2021-12-06 21:48:06
【问题描述】:
这是我的交互反应角色代码。仅供参考,我使用了新的 node.js,所以它不会因为版本而出错。问题是重新启动我的机器人后下拉失败。我的代码中的“秘密”是角色 ID,所以请忽略它。 这是我的代码:
client.on("message", async message => {
if (message.content == prefix + "rr") {
let option1 = new MessageMenuOption()
.setLabel("Black Charcoal")
.setValue("Option 1")
.setDefault()
.setEmoji("????")
let option2 = new MessageMenuOption()
.setLabel("Love Magenta")
.setValue("Option 2")
.setDefault()
.setEmoji("❤️")
let selection = new MessageMenu()
.setID("Selection")
.setMaxValues(1)
.setMinValues(0)
.setPlaceholder("Select Role")
.addOption(option1)
.addOption(option2)
let embed = new Discord.MessageEmbed()
.setColor("0x00a6ff")
.setTitle("VIP Colour Role")
.setDescription(`<@&secret>\n<@&secret>\n<@&secret>\n<@&secret>\n<@&secret>`)
let menumsg = await message.channel.send(embed, selection)
const role1 = message.guild.roles.cache.find(r => r.id === "secret")
const role2 = message.guild.roles.cache.find(r => r.id === "secret")
async function menuselection(menu) {
switch(menu.values[0]) {
case "Option 1":
if(message.member.roles.cache.has("secret")){
await message.member.roles.add(role1)
await message.member.roles.remove([role2])
await menu.reply.send("Claimed Black Charcoal!", true)}
break;
case "Option 2":
if(message.member.roles.cache.has("secret")){
await message.member.roles.add(role2)
await message.member.roles.remove([role1])
menu.reply.send("Claimed Love Magenta!", true)}
break;
}
}
client.on("clickMenu", (menu) => {
if(menu.message.id == menumsg.id) {
if(menu.clicker.user.id == message.author.id) menuselection(menu)
else menu.reply.send(":x: you are not allowed to pick something", true)
}
})
}
})
【问题讨论】:
-
clickMenu 不是事件
-
我的代码运行成功,但在我重新启动机器人后,交互不会检测到旧消息
-
重启bot后不会再搜索之前发送的所有消息是正常的
-
啊,我明白了,但我认为我们可以获取交互信息。但是不知道如何获取它。
标签: node.js discord discord.js interaction