首页 > 解决方案 > 如何清除嵌入数据?| 不和谐.JS

问题描述

我目前正在尝试制作一个不和谐的机器人,通过使用某个命令 !job 嵌入频道来显示“订单”。参数也是嵌入中的字段。然后用户必须输入“接受”来接受所述工作。然后删除它发布的第一个嵌入,然后发布一个新的,说明“订单已关闭”,这样其他任何人都不能再“接受”订单。

问题:机器人重新启动后,第一次嵌入工作正常;但是,“订单已关闭”嵌入帖子记录了所有先前的嵌入。例如,如果第一个作业状态为“x”,则嵌入只输出应有的顺序。但是,如果第二个作业记录为“y”,则两者都将被输出并叠加。在第三个订单上,它输出所有 3 个记录等。

使用 !job 后:

图像1

输入“接受”后,接受作业: 图2

放置并接受第二个作业后,将输出两个订单: 图3

相关代码:

client.on("ready", () => {
 console.log(`Starting up. Running version ${version}`)
});


function isCommand(command, message) {
 var command = command.toLowerCase(); //If a user types a command with uppercase either lowercase
 var content = message.content.toLowerCase()
 return content.startsWith(prefix + command); //Checking if the message has a prefix first.
};
//isNotCommand function (needed
client.on('message', (message) => {

   if (isCommand('job', message)) {

    const args = message.content.slice(prefix.length).trim().split(/ +/g);

    // Checking if they have perms
    if (message.member.roles.cache.find(r => r.name === "Owner")) {
     const boostEmbed = new discord.MessageEmbed()
      .setColor('GREEN')
      .setDescription("A job has just been placed. Details are below.")
      .setAuthor(' Job Placed!')
      .addField("Rank", args[1] + " " + args[2] + " " + args[3] + " " + args[4] + " " + args[5], true)
      .addField("Queue", args[6], true)
      .addField("Console", args[7], true)
      .addField("Payout", args[8], true)

     const closedEmbed = new discord.MessageEmbed()
      .setColor('RED')
      .setDescription("~~A job has just been placed. Details are below.~~")
      .setAuthor(' Job Closed!')
      .addField("Rank", "~~" + args[1] + " " + args[2] + " " + args[3] + " " + args[4] + " " + args[5] + "~~", true)
      .addField("Queue", "~~" + args[6] + "~~", true)
      .addField("Console", "~~" + args[7] + "~~", true)
      .addField("Payout", "~~" + args[8] + "~~", true)

     const messagingEmbed = new discord.MessageEmbed()
      .setColor('GREEN')
      .setDescription("You have accepted the job. Details are below.")
      .setAuthor(' Job Accepted!')
      .addField("Rank", args[1] + " " + args[2] + " " + args[3] + " " + args[4] + " " + args[5], true)
      .addField("Payout", args[8], true)
      .addField("Username", args[9], true)
      .addField("Password", args[10], true)



     if (args[1] === undefined) {
      message.author.send("!job <Rank> <Queue | Single / Duo> <Console> <Payout> <Username> <Password>")
       .then(function(message) {
        setTimeout(function() {
         message.delete();
        }, 10000);
       })
     } else { // Main
      message.guild.channels.cache.get(channelidrequest).send(boostEmbed)
      message.guild.channels.cache.get(channelidrequest).send("React if you want to take the job!")
       .then(function(message) {
        message.react("✅")
       })

      const filter = m => m.content.includes('accept');
      const collector = message.channel.createMessageCollector(filter, {
       time: 172800000
      });

      collector.on('end', collected => {
       message.guild.channels.cache.get(channelidrequest).bulkDelete(1);
       const msg = message.guild.channels.cache.get(channelidrequest).fetchMessages({
        limit: 1
       })
       msg.edit(closedEmbed);
      })

      console.log(collector)
      collector.on('collect', message => {
         if (message.content == "accept") {
          message.channel.send("Hello");
         }
         const user = message.author
         if (user.id === "722188709612748830") {
          console.log("No Bots");
         } else {
          message.guild.channels.cache.get(channelidrequest).bulkDelete(2);

          message.guild.channels.cache.get(channelidrequest).send(closedEmbed);

          const joblogEmbed = new discord.MessageEmbed()
           .setColor('YELLOW')
           .setDescription("A job has just been logged. Details are below.")
           .setAuthor(' Job Logged!')
           .addField("Rank", args[1] + " " + args[2] + " " + args[3] + " " + args[4] + " " + args[5], true)
           .addField("Queue", args[6], true)
           .addField("Console", args[7], true)
           .addField("Payout", args[8], true)
           .addField("Username", args[9], true)
           .addField("Password", args[10], true)
           .addField("Booster", "<@" + user.id + ">", true)
          message.guild.channels.cache.get(channelidlog).send(joblogEmbed)
          user.send(messagingEmbed);

         }

长话短说,当我只希望它显示与所下订单相关的“订单关闭”嵌入时,输出堆叠在一起。抱歉,如果有任何混淆,这是我的第一篇文章。

标签: botsdiscorddiscord.js

解决方案


同样的现象也发生在我身上。但是,当我重新启动服务器时,它被治愈了。


推荐阅读