重启后下拉失败 - discord.js
Dropdown failed after restart - discord.js
这是我的互动反应角色code.FYI我用的是新的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)
}
})
}
})
您似乎正在使用现已存档的 discord-buttons 库。查看它的 source code,它似乎没有存储关于哪些消息在机器人内存以外的任何地方有菜单的信息。当您重新启动您的机器人时,该信息将丢失,并且您的机器人将停止监视菜单点击。
要使其在重启后继续工作,您必须将此类信息存储在机器人外部的某处,例如文件或某些数据库,并在机器人启动时再次启动菜单。
这是我的互动反应角色code.FYI我用的是新的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)
}
})
}
})
您似乎正在使用现已存档的 discord-buttons 库。查看它的 source code,它似乎没有存储关于哪些消息在机器人内存以外的任何地方有菜单的信息。当您重新启动您的机器人时,该信息将丢失,并且您的机器人将停止监视菜单点击。
要使其在重启后继续工作,您必须将此类信息存储在机器人外部的某处,例如文件或某些数据库,并在机器人启动时再次启动菜单。