messageReactionAdd和messageReactionRemove触发多次

时间:2020-07-15 01:45:57

标签: discord

仍然是同一个不和谐的bot,但是让其他东西起作用了。我知道使用awaitReactions的方法,但是我不知道该怎么做,因为当我实现它时,它根本没有用。这是大块的代码:

else if (command == 'createteam'){
        message.channel.send(message.author.username + ' has started a dungeon party! React with your class to join.').then(messageReaction => {
            messageReaction.react("⚔️")
            messageReaction.react("?")
            messageReaction.react("?️")
            messageReaction.react("❤️")
            messageReaction.react("?")
        });
        const members = [];
        members.count = 0
        client.on('messageReactionAdd', (messageReaction, user) => {
            if(user.bot)  return;
            const { message2, emoji } = messageReaction;
            
            if(emoji.name === "⚔️"){
                message.channel.send(user.username + ' has joined ' + message.author.username + '\'s\ party as a beserker!');
                let newLength = members.unshift(user.username);
                members.count += 1
                console.log(members);
                if(members.count == 5){
                  message.channel.send({embed: {
                    color: 3447003,
                    title: "Full Team!",
                    fields: [
                      { name: "Message:", value: message.author.username + '\'s\ party is full! The members are ' + members[0] + ', ' + members[1] + ', ' + members[2] + ', ' + members[3] + ', and ' + members[4] + '.', inline: true},
                    ]
                  }
                });
                  console.log(members);
                  members.count = 0
                  members.splice(0, 5)
                }
              }
              if(emoji.name === "?") {
                message.channel.send(user.username + ' has joined ' + message.author.username + '\'s\ party as an archer!');
                let newLength = members.unshift(user.username);
                members.count += 1
                console.log(members);
                if(members.count == 5){
                  message.channel.send({embed: {
                    color: 3447003,
                    title: "Full Team!",
                    fields: [
                      { name: "Message:", value: message.author.username + '\'s\ party is full! The members are ' + members[0] + ', ' + members[1] + ', ' + members[2] + ', ' + members[3] + ', and ' + members[4] + '.', inline: true},
                    ]
                  }
                });
                  console.log(members);
                  members.count = 0
                  members.splice(0, 5)
                }
              }
              if(emoji.name === "?️") {
                message.channel.send(user.username + ' has joined ' + message.author.username + '\'s\ party as a tank!');
                let newLength = members.unshift(user.username);
                members.count += 1
                console.log(members);
                if(members.count == 5){
                  message.channel.send({embed: {
                    color: 3447003,
                    title: "Full Team!",
                    fields: [
                      { name: "Message:", value: message.author.username + '\'s\ party is full! The members are ' + members[0] + ', ' + members[1] + ', ' + members[2] + ', ' + members[3] + ', and ' + members[4] + '.', inline: true},
                    ]
                  }
                });
                  console.log(members);
                  members.count = 0
                  members.splice(0, 5)
                }
              }
              if(emoji.name === "❤️") {
                message.channel.send(user.username + ' has joined ' + message.author.username + '\'s\ party as a healer!');
                let newLength = members.unshift(user.username);
                members.count += 1
                console.log(members);
                if(members.count == 5){
                  message.channel.send({embed: {
                    color: 3447003,
                    title: "Full Team!",
                    fields: [
                      { name: "Message:", value: message.author.username + '\'s\ party is full! The members are ' + members[0] + ', ' + members[1] + ', ' + members[2] + ', ' + members[3] + ', and ' + members[4] + '.', inline: true},
                    ]
                  }
                });
                  console.log(members);
                  members.count = 0
                  members.splice(0, 5)
                }
              }
              if(emoji.name === "?") {
                message.channel.send(user.username + ' has joined ' + message.author.username + '\'s\ party as a mage!');
                let newLength = members.unshift(user.username);
                members.count += 1
                console.log(members);
                if(members.count == 5){
                  message.channel.send({embed: {
                    color: 3447003,
                    title: "Full Team!",
                    fields: [
                      { name: "Message:", value: message.author.username + '\'s\ party is full! The members are ' + members[0] + ', ' + members[1] + ', ' + members[2] + ', ' + members[3] + ', and ' + members[4] + '.', inline: true},
                    ]
                  }
                });
                  console.log(members);
                  members.count = 0
                  members.splice(0, 5)
                }
              }
            });
        client.on('messageReactionRemove', (messageReaction, user) => {
            if(user.bot)  return;
            const { message2, emoji } = messageReaction;
            
            if(emoji.name === "⚔️" && members.count != 0) {
                message.channel.send(user.username + ' has left ' + message.author.username + '\'s\ party (was beserker).');
                members.splice(members.indexOf(user.username), 1);
                members.count -= 1
                console.log(members);
              }
              if(emoji.name === "?" && members.count != 0) {
                message.channel.send(user.username + ' has left ' + message.author.username + '\'s\ party (was archer).');
                members.splice(members.indexOf(user.username), 1);
                members.count -= 1
                console.log(members);
              }
              if(emoji.name === "?️" && members.count != 0) {
                message.channel.send(user.username + ' has left ' + message.author.username + '\'s\ party (was tank).');
                members.splice(members.indexOf(user.username), 1);
                members.count -= 1
                console.log(members);
              }
              if(emoji.name === "❤️" && members.count != 0) {
                message.channel.send(user.username + ' has left ' + message.author.username + '\'s\ party (was healer).');
                members.splice(members.indexOf(user.username), 1);
                members.count -= 1
                console.log(members);
              }
              if(emoji.name === "?" && members.count != 0) {
                message.channel.send(user.username + ' has left ' + message.author.username + '\'s\ party (was mage).');
                members.splice(members.indexOf(user.username), 1);
                members.count -= 1
                console.log(members);
              }
              });
       if(command == 'starttimer'){
        setTimeout(() => {message.channel.send('test');}, 2000);
       }
              
};

是的,每次我运行-createteam时,它都会第一次运行,但之后会逐渐增加。我还试图让它一次运行多个实例,但稍后再讲。

(奖金:如果有人可以告诉我如何在5分钟后删除尚未填补的团队,那将是史诗般的事情)

0 个答案:

没有答案