Aqui está o meu código, eu comentei a parte que acho ser o problema, já perdi horas tentando resolver, como dito no meu comentário no código, sempre que eu apagava o If o bot voltava a reproduzir, mas apenas uma musica pois a função de fila simplesmente não estava certa, se você puder tirar um tempinho para me ajudar eu ficaria muito agradecido, continuarei tentando até que obtenha uma solução (Caso precise de alguma informação a mais apenas me pergunte)
const Discord = require(‘discord.js’);
const Youtube = require(‘simple-youtube-api’);
const Ytdl = require(‘ytdl-core’);
const {TOKEN_DISCORD, GOOGLE_KEY } = require(’./config.js’);
const youtube = new Youtube(GOOGLE_KEY);
const app = new Discord.Client();
const prefixoComando = ‘!’;
const filaDeMusicas = [];
let estouPronto = false;
app.on(‘ready’, () => {
console.log('Estou conectado!');
});
app.on(‘message’, async (msg) => {
// !join = Bot se junta ao canal de voz
if (msg.content === `${prefixoComando}join`){
if (msg.member.voice.channel){
connection = await msg.member.voice.channel.join();
estouPronto = true;
} else {
msg.channel.send('Você precisa entrar em um canal de voz ');
}
}
else if (msg.content === `${prefixoComando}leave`){
if (msg.member.voice.channel){
msg.member.voice.channel.leave();
estouPronto = false;
msg.channel.send('Saindo :)')
} else {
msg.channel.send('Você precisa estar conectado a um Canal de Voz');
}
}
else if (msg.content.startsWith(`${prefixoComando}play `)){
if (estouPronto){
let oQueTocar = msg.content.replace(`${prefixoComando}play `,'');
if (Ytdl.validateURL(oQueTocar)){
filaDeMusicas.push(oQueTocar);
if (filaDeMusicas === 1){ //acredito que o erro possa estar aqui, toda vez que eu apago esse if e deixo apenas
// if (Ytdl.validateURL(oQueTocar)){ filaDeMusicas.push(oQueTocar);}
//ele volta a tocar musica, porém a funções de uma fila de musicas pra vir a seguir não funciona
tocarMusica(msg);
}
} else {
msg.channel.send('Link inválido ')
}
try { // tenta encontrar música por link
let video = await youtube.getVideo(oQueTocar);
msg.channel.send(`O video foi encontrado!: ${video.title}`);
}catch (error) {
try{
let videosPesquisados = await youtube.searchVideos(oQueTocar, 5);
let videoEncontrado;
for (i in videosPesquisados){
videoEncontrado = await youtube.getVideoByID(videosPesquisados[i].id);
msg.channel.send(`${videoEncontrado.title}`)
}
msg.channel.send({embed: {
color:3447003,
description: 'Você poderia clicar na reação que representa qual musica você gostaria? Assim posso saber exatamente o que você quer ^^ '
}}).then( async (embedMessage) => {
await embedMessage.react('1️⃣');
await embedMessage.react('2️⃣');
await embedMessage.react('3️⃣');
await embedMessage.react('4️⃣');
await embedMessage.react('5️⃣');
const filter = (reaction, user) =>{
return['1️⃣', '2️⃣', '3️⃣', '4️⃣', '5️⃣'].includes(reaction.emoji.name)
&& user.id === msg.author.id;
}
let collector = embedMessage.createReactionCollector(filter, {time: 20000});
collector.on('collect', async (reaction, reactionCollector) => {
if(reaction.emoji.name === '1️⃣'){
msg.channel.send('Reagiu com 1️⃣ ');
}
else if(reaction.emoji.name === '2️⃣'){
msg.channel.send('Reagiu com 2️⃣ ');
}
else if(reaction.emoji.name === '3️⃣'){
msg.channel.send('Reagiu com 3️⃣ ');
}
else if(reaction.emoji.name === '4️⃣'){
msg.channel.send('Reagiu com 4️⃣ ');
}
else if(reaction.emoji.name === '5️⃣'){
msg.channel.send('Reagiu com 5️⃣ ');
}
});
});
} catch (error) {
}
}
}
}
});
function tocarMusica(msg){
connection.play(Ytdl(filaDeMusicas[0])).on(‘finish’, () =>{
filaDeMusicas.shift();
if(filaDeMusicas.length >=1){
tocarMusica(msg);
}
});
}
app.login(TOKEN_DISCORD);