Как очистить данные встраивания? | Раздор. JS - PullRequest
0 голосов
/ 17 июня 2020

В настоящее время я пытаюсь создать бота Discord, который отображает «порядок», вставляя его в канал при использовании определенной команды! Job. Аргументы также являются полями во встраивании. Затем пользователь должен ввести «принять», чтобы принять указанное задание. Затем это удаляет первое размещенное встраивание, а затем публикует новый, в котором говорится, что «заказ закрыт», так что этот заказ больше не может быть «принят» кем-либо еще.

Проблема: первое встраивание работает нормально после перезапуска бота; тем не менее, "заказ закрыт" включает все предыдущие записи. Например, если в первом задании указано «x», встраивание выводит только этот порядок, как и предполагалось. Однако, если второе задание записано «y», оба будут выведены и сложены. В третьем порядке он выводит все 3 записанных et c.

После использования! Задания:

image1

После ввода 'accept', чтобы принять задание: image2

После размещения и принятия второго задания выводятся оба заказа: image3

Соответствующий код:

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);

         }

Long Короче говоря, выходы складываются друг над другом, когда я просто хочу, чтобы отображалось только вложение «заказ закрыт», относящийся к размещенному заказу. Прошу прощения, если возникла путаница, это мой первый пост.

...