причина в том, что цикл while работает очень быстро .Пока сообщения приходят медленно.Так что к тому времени, когда придут 5 «догадок», цикл мог бы пройти миллион раз.Так же получается миллион коллекционеров.
попробуйте это:
function getGuesses(numberOfGuesses,maxGuesses){
const collector = new Discord.MessageCollector(message.channel, m => m.author.id === message.author.id, { time: 10000, max: 1 });
collector.on('collect', message => {
if (guess.length == 0 || ! guessInRange(guess)) {
message.channel.send('please say 1~100');
} else {
if (parseInt(guess) == secretNumber) {
message.channel.send('Boom! Correct!');
return collector.stop();
} else if (parseInt(guess) < secretNumber) {
numberOfGuesses++;
message.channel.send('Too small');
collector.stop();
} else {
numberOfGuesses++;
message.channel.send('Too big');
collector.stop();
}
if (numberOfGuesses == maxGuesses) {
collector.stop();
return message.channel.send('Game over');
}
}
});
//Repeat if guesses still exist
collector.on('end', collected => {
if(numberOfGuessed < maxGuesses) getGuesses(numberOfGuesses,maxGuesses)
});
};
getGuesses(0,5);