Estoy creando un sistema de omisión de votos para mi bot de música y hay 2 problemas con él.
Problemas
La misma persona puede volver a votar
Incluso cuando se alcanza la cantidad de votos requeridos, la canción no salta Aquí está el código
else if (cmd === "skip") { let queue = distube.getQueue(message.guild.id); let channel = message.member.voice.channel; if (!channel) { return message.channel.send( "You need to Join Voice Channel" ) } if (!queue) { return message.channel.send( "Nothing Playing" ) } if (queue.songs.length < 1){ return message.channel.send("There are no more tracks left. Add some") } channel = message.member.voice.channel if (!channel){ message.channel.send("You must be in a voice channel to skip this song") } var required = Math.ceil(message.member.voice.channel.size/2) if (voteskips.includes(message.member.id)){ message.channel.send("You already voted for skipping this song") } voteskips.push(message.member.id) message.channel.send(`**Votes : ${voteskips.length}/${channel.members.size}** ${required - voteskips.length} more votes needed to skip`) if (voteskips.length >= required){ if (queue.autoplay || queue.songs.length > 1) distube.skip(message) else distube.stop(message) message.channel.send({embeds:[ new Discord.MessageEmbed() .setTitle("Skipped current track") .setColor("LIGHT_GREY") ]}) } }Cometí un error por descuido. En primer lugar, se supone que la variable requerida es
var required = Math.ceil(message.member.voice.channel.members.size/2);El siguiente es que se supone que debo insertar la identificación del autor en la matriz. No simplemente message.member.id . Aquí está el código actualizado.
else if (cmd === "skip") { let queue = distube.getQueue(message.guild.id); let channel = message.member.voice.channel; let members = Math.ceil(message.member.voice.channel.members.size/2) if (!channel) { return message.channel.send( "You need to Join Voice Channel" ) } if (!queue) { return message.channel.send( "Nothing Playing" ) } if (queue.songs.length < 1){ return message.channel.send("There are no more tracks left. Add some") } if (voteskips.find(id=>id == message.author.id)){ message.channel.send("You have already voted") }else { voteskips.push(message.author.id) message.channel.send(`Votes ${voteskips.length}/${members}. ${members - voteskips.length} more votes to skip.`) } if (voteskips.length === members){ if (queue.autoplay || queue.songs.length > 1){ distube.skip(message) }else distube.stop(message) } }