首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >机器人重新启动后,Discord.js按钮无法工作

机器人重新启动后,Discord.js按钮无法工作
EN

Stack Overflow用户
提问于 2022-02-09 11:33:02
回答 1查看 452关注 0票数 0

按钮在执行命令后工作,但在重新启动bot并按下按钮后,它表示交互失败了

我试着将clickButton事件放在事件处理程序中,但是它没有工作,因为我得到了很多错误。即使在重新启动之后,我仍然如何使按钮工作?

代码语言:javascript
复制
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", () => {

            });

我尝试过很多方法,但我仍然面临着同样的问题。

EN

回答 1

Stack Overflow用户

发布于 2022-02-12 00:22:09

这是不可能的,消息组件收集器与客户端一起被销毁,因此在重新启动bot之后无法运行它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71048824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档