重启后下拉失败 - discord.js
Posted
技术标签:
【中文标题】重启后下拉失败 - discord.js【英文标题】:Dropdown failed after restart - discord.js 【发布时间】: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后不会再搜索之前发送的所有消息是正常的 啊,我明白了,但我认为我们可以获取交互信息。但是不知道如何获取它。 【参考方案1】:您似乎正在使用现已归档的 discord-buttons 库。通过它的source code,看起来它除了机器人的内存之外,没有存储有关哪些消息具有菜单的信息。当您重新启动机器人时,该信息会丢失,并且您的机器人会停止查看菜单点击。
要在重新启动后使其继续工作,您必须将此类信息存储在机器人外部的某个位置,例如文件或某个数据库,并在机器人启动时再次启动菜单。
【讨论】:
我还在学习javascript软件,我刚刚开始学习如何制作数据库。我只知道如何将消息保存到数据库,我不知道如何保存诸如选择菜单之类的交互并在重新启动后启动它。以上是关于重启后下拉失败 - discord.js的主要内容,如果未能解决你的问题,请参考以下文章
存储数据恢复案例存储断电后重启失败,虚拟机启动失败的数据恢复
MySql 重启后:#1452 - 无法添加或更新子行:外键约束失败
【zookeeper】服务器重启后zookeeper集群个别节点启动失败的处理办法