重启后下拉菜单失败- discord.js



这是我的交互反应角色代码。仅供参考,我已经使用了新的node.js,所以它不会因为版本而出错。问题是重启我的机器人后下拉失败。"secret"在我的代码中是角色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图书馆。通过查看其源代码,它似乎不存储有关哪些消息具有菜单的信息,而不是存储在bot的内存中。当你重新启动你的聊天机器人时,这些信息将丢失,并且你的聊天机器人将停止监视菜单点击。

为了在重启后保持它的工作,您必须将这些信息存储在bot外部的某个地方,如文件或某些数据库,并在bot启动时再次启动菜单。