module.exports.run = async (client, message, args, db, prefix) => { const hoisting_chars = ["!","?",'/','\'','~','#','@','+','=','(','*','&','^','%','$','[','`','"','0','1','2','3','4','5','6','7','8','9','_','-','.','¿',':',';',',','<','>']; const members = message.guild.members.cache const reset = [] const set = [] members.forEach(member => { var firstchar = member.user.username.substring(0,1); if(!hoisting_chars.includes(firstchar) && member.nickname === 'hoisting') reset.push(member) if(hoisting_chars.includes(firstchar) && member.nickname === null) set.push(member) }); if(set.length) { message.channel.send(" Dehoisting **" + set.length + "** members..." ) .catch(err => console.error(err)) .then(msg => { var currentIndex = 0; var intervalId = setInterval(function(){ //console.log(set[currentIndex].user.username); message.guild.members.cache.get(set[currentIndex].user.id).setNickname("", "Hoisting") currentIndex++; // We've reached the end of the array, stop calling this function if (currentIndex == set.length) { clearInterval(intervalId); msg.edit(globals.greentick + " Successfully dehoisted **" + set.length + "** members!") } }, 300); }) } if(reset.length) { message.channel.send(" Un-dehoisting **" + reset.length + "** members..." ) .catch(err => console.error(err)) .then(msg => { var currentIndex = 0; var intervalId = setInterval(function(){ //console.log(reset[currentIndex].user.username); message.guild.members.cache.get(reset[currentIndex].user.id).setNickname("", "No longer hoisting") currentIndex++; // We've reached the end of the array, stop calling this function if (currentIndex == reset.length) { clearInterval(intervalId); msg.edit(globals.greentick + " Successfully un-dehoisted **" + reset.length + "** members!") } }, 300); }) } if(reset.length + set.length === 0) { message.channel.send(globals.greentick + " **All hoisters have already been detected and un-hoisted!**") } };