按钮在执行命令后工作,但在重新启动bot并按下按钮后,它表示交互失败了。
我试着将clickButton事件放在事件处理程序中,但是它没有工作,因为我得到了很多错误。即使在重新启动之后,我仍然如何使按钮工作?
const { MessageEmbed, Client } = require('discord.js');
const client = new Client({ fetchAllMembers: true });
const buttons = require('discord-buttons')
buttons(client);
const { MessageMenu, MessageMenuOption } = require('discord-buttons');
client.settings = {
/////////////////////etkinlik rolleri///////////////////////
menu_role_1: "940239454503837707",//csgo
menu_role_2: "940239479753543690",//Valorant
menu_role_3: "940239499705856001",//PUBG
menu_role_4: "940239524334829658",//Minecraft
menu_role_5: "940239546803691530",//Among Us
menu_role_6: "940239566579826771",//Gartic.io
menu_role_7: "940239590869049374",//League of Legends
menu_role_8: "940220940569149491",//Risk: Global Domination
menu_role_9: "940220945568788491",//Tabletop Simulator
/////////////////////etkinlik rolleri///////////////////////
prefix: "ff",
};
/////////////////////////////////////Etkinlik Seçim////////////////////////////////
client.on("message", async(message) => {
let args = message.content.trim().split(" ")
if(args[0] !== client.settings.prefix + "start" /* setup message */) { return false } else {
let option_1 = new MessageMenuOption()
.setLabel("CS:GO")
.setValue("1")
.setDescription("Bu rolü almak için lütfen tıklayın.")
.setDefault()
.setEmoji("893176523840974848") // emoji ekleyiniz burçların yanına yaptığım gibi id olarak giriniz
let option_2 = new MessageMenuOption()
.setLabel("Valorant")
.setValue("2")
.setDescription("Bu rolü almak için lütfen tıklayın.")
.setDefault()
.setEmoji("893177016327757824") // emoji ekleyiniz burçların yanına yaptığım gibi id olarak giriniz
let option_3 = new MessageMenuOption()
.setLabel("PUBG")
.setValue("3")
.setDescription("Bu rolü almak için lütfen tıklayın.")
.setDefault()
.setEmoji("893191194966884433") // emoji ekleyiniz burçların yanına yaptığım gibi id olarak giriniz
let option_4 = new MessageMenuOption()
.setLabel("Minecraft")
.setValue("4")
.setDescription("Bu rolü almak için lütfen tıklayın.")
.setDefault()
.setEmoji("893177569485148200") // emoji ekleyiniz burçların yanına yaptığım gibi id olarak giriniz
let option_5 = new MessageMenuOption()
.setLabel("Among Us")
.setValue("5")
.setDescription("Bu rolü almak için lütfen tıklayın.")
.setDefault()
.setEmoji("893193544741814322") // emoji ekleyiniz burçların yanına yaptığım gibi id olarak giriniz
let option_6 = new MessageMenuOption()
.setLabel("Gartic.io")
.setValue("6")
.setDescription("Bu rolü almak için lütfen tıklayın.")
.setDefault()
.setEmoji("893191664313724999") // emoji ekleyiniz burçların yanına yaptığım gibi id olarak giriniz
let option_7 = new MessageMenuOption()
.setLabel("League of Legends")
.setValue("7")
.setDescription("Bu rolü almak için lütfen tıklayın.")
.setDefault()
.setEmoji("893188467352281088") // emoji ekleyiniz burçların yanına yaptığım gibi id olarak giriniz
let option_8 = new MessageMenuOption()
.setLabel("Risk: Global Domination")
.setValue("8")
.setDescription("Bu rolü almak için lütfen tıklayın.")
.setDefault()
.setEmoji("940220653452267550") // emoji ekleyiniz burçların yanına yaptığım gibi id olarak giriniz
let option_9 = new MessageMenuOption()
.setLabel("Tabletop Simulator")
.setValue("9")
.setDescription("Bu rolü almak için lütfen tıklayın.")
.setDefault()
.setEmoji("940220548741492756") // emoji ekleyiniz burçların yanına yaptığım gibi id olarak giriniz
let option_55 = new MessageMenuOption()
.setLabel("Rol İstemiyorum")
.setValue("55")
.setDescription("Aldığınız tüm rolleri kaldırmak için tıkla.")
.setDefault()
.setEmoji("️") // emoji ekleyiniz burçların yanına yaptığım gibi id olarak giriniz
let selection = new MessageMenu()
.setID("selector")
.setPlaceholder("Oyun rolleri seçmek için tıklayınız.")
.addOption(option_1)
.addOption(option_2)
.addOption(option_3)
.addOption(option_4)
.addOption(option_5)
.addOption(option_6)
.addOption(option_7)
.addOption(option_8)
.addOption(option_9)
.addOption(option_55)
var embed = new MessageEmbed()
.setColor("#ff4494")
.setTitle(":strawberry: Nympea Oyun Rolleri :strawberry:")
.setDescription("Aşağıdaki menüye tıklayarak dilediğin oyunu seçebilirsin. Bu sayede sunucumuz içerisinde gerçekleşen oyun etkinliklerinden haberdar olabilirsin.")
.setImage(`https://cdn.discordapp.com/attachments/900389530748723270/903031735946739774/07c7170a904eeb3feabbbd783ba62b6b.gif`)
let msg = await message.channel.send(embed, selection)
client.on("clickMenu", async (menu) => {
if(menu.message.id === msg.id) {
menuselect(menu)
}
})
};
async function menuselect(menu) {
switch(menu.values[0]) {
case "1":
menu.reply.send("**CS:GO** Adlı Oyun Rolü Eklendi!", true)
await menu.clicker.member.roles.add(client.settings.menu_role_1)
break;
case "2":
menu.reply.send("**Valorant** Adlı Oyun Rolü Eklendi!", true)
await menu.clicker.member.roles.add(client.settings.menu_role_2)
break;
case "3":
menu.reply.send("**PUBG** Adlı Oyun Rolü Eklendi!", true)
await menu.clicker.member.roles.add(client.settings.menu_role_3)
break;
case "4":
menu.reply.send("**Minecraft** Adlı Oyun Rolü Eklendi!", true)
await menu.clicker.member.roles.add(client.settings.menu_role_4)
break;
case "5":
menu.reply.send("**Among Us** Adlı Oyun Rolü Eklendi!", true)
await menu.clicker.member.roles.add(client.settings.menu_role_5)
break;
case "6":
menu.reply.send("**Gartic.io** Adlı Oyun Rolü Eklendi!", true)
await menu.clicker.member.roles.add(client.settings.menu_role_6)
break;
case "7":
menu.reply.send("**League of Legends** Adlı Oyun Rolü Eklendi!", true)
await menu.clicker.member.roles.add(client.settings.menu_role_7)
break;
case "8":
menu.reply.send("**Risk: Global Domination** Adlı Oyun Rolü Eklendi!", true)
await menu.clicker.member.roles.add(client.settings.menu_role_8)
break;
case "9":
menu.reply.send("**Tabletop Simulator** Adlı Oyun Rolü Eklendi!", true)
await menu.clicker.member.roles.add(client.settings.menu_role_9)
break;
case "55":
menu.reply.send("**Seçtiğin tüm oyun rolleri kaldırıldı!**", true)
await menu.clicker.member.roles.remove(client.settings.menu_role_1)
await menu.clicker.member.roles.remove(client.settings.menu_role_2)
await menu.clicker.member.roles.remove(client.settings.menu_role_3)
await menu.clicker.member.roles.remove(client.settings.menu_role_4)
await menu.clicker.member.roles.remove(client.settings.menu_role_5)
await menu.clicker.member.roles.remove(client.settings.menu_role_6)
await menu.clicker.member.roles.remove(client.settings.menu_role_7)
await menu.clicker.member.roles.remove(client.settings.menu_role_8)
await menu.clicker.member.roles.remove(client.settings.menu_role_9)
break;
default:
break;
}
}
});
/////////////////////////////////////Renk Seçim////////////////////////////////
client.login(process.env.TOKEN)
.then(() => console.log("\x1b[34m%s\x1b[1m", "[ Bot ] Discord API verified bot's token!"))
.catch(err => console.error("\x1b[31m%s\x1b[0m", "[ Bot ] Discord API can't verified bot's token!"))
client.on("ready", () => {
});我尝试过很多方法,但我仍然面临着同样的问题。
发布于 2022-02-12 00:22:09
这是不可能的,消息组件收集器与客户端一起被销毁,因此在重新启动bot之后无法运行它们。
https://stackoverflow.com/questions/71048824
复制相似问题