Pequenos problemas
Bom, eu queria usar o evento EndTrack para desconectar o bot do chat de voz após acabar todas as musicas, sabe como é, deixar ele sozinho la pela eternidade nao é muito legal, ai tentei usar o Player.Disconnect e ate o Player.Destroy, porem retornou erro, ai pensei q podia ter feito errado no evento , então decidi testar em comando, ja que consegui fazer comandos tipo o skip e o stop, porem também não funcionou. Provavelmente isso esta acontecendo por alguma bobagem minha, então ja peço desculpas pelo transtorno.
61 Replies
Só que não é bom você usar o track end para destruir o player
Me manda o eventi
Pra eu analisar 😌
continuing-cyanOP•3y ago
client.moon.on('trackEnd', async (player) => {
client.channels.cache.get(player.textChannel).send('a faixa acabou');
player.destroy();
});
de primeira eu tentei assim pq eu vi que o player tava sendo usado na linha que manda a mensagem da faixa acabar
Qual erro que apareceu?
continuing-cyanOP•3y ago
C:\Users\T-Gamer\Desktop\discord-bot\index.js:49
player.destroy();
^
TypeError: player.destroy is not a function
at MoonlinkManager.<anonymous> (C:\Users\T-Gamer\Desktop\discord-bot\index.js:49:9)
at MoonlinkManager.emit (node:events:513:28)
at WebSocket.<anonymous> (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\moonlink.js@Moonlink\MoonlinkNodes.js:135:32)
at WebSocket.emit (node:events:513:28)
at Receiver.receiverOnMessage (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\websocket.js:1178:20)
at Receiver.emit (node:events:513:28)
at Receiver.dataMessage (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\receiver.js:528:14)
at Receiver.getData (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\receiver.js:446:17)
at Receiver.startLoop (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\receiver.js:148:22)
at Receiver._write (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\receiver.js:83:10)
?play all i want
added track in queue
Olivia Rodrigo - All I Want (Official Video) is playing now
?eval client.moon.players.get(message.author.id).destroy()
?eval client.moon.players.get(message.guild.id).destroy()
@SuperPlayerBots você atualizou moonlink.js?
continuing-cyanOP•3y ago
ue tinha atualizado naquela hora q voce tinha falado
vou tentar denovo
é dei agora npm update moonlink.js pra conferir
mas ainda da erro
C:\Users\T-Gamer\Desktop\discord-bot\index.js:49
player.destroy();
^
TypeError: player.destroy is not a function
at MoonlinkManager.<anonymous> (C:\Users\T-Gamer\Desktop\discord-bot\index.js:49:9)
at MoonlinkManager.emit (node:events:513:28)
at WebSocket.<anonymous> (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\moonlink.js@Moonlink\MoonlinkNodes.js:135:32)
at WebSocket.emit (node:events:513:28) at Receiver.receiverOnMessage (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\websocket.js:1178:20) at Receiver.emit (node:events:513:28) at Receiver.dataMessage (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\receiver.js:528:14) at Receiver.getData (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\receiver.js:446:17) at Receiver.startLoop (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\receiver.js:148:22) at Receiver._write (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\receiver.js:83:10)
at WebSocket.emit (node:events:513:28) at Receiver.receiverOnMessage (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\websocket.js:1178:20) at Receiver.emit (node:events:513:28) at Receiver.dataMessage (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\receiver.js:528:14) at Receiver.getData (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\receiver.js:446:17) at Receiver.startLoop (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\receiver.js:148:22) at Receiver._write (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\receiver.js:83:10)
Pera aí rapidinho
Deixa me lembrar dos parâmetros do trackEnd
continuing-cyanOP•3y ago
tranquilo
Tenta
@SuperPlayerBots
continuing-cyanOP•3y ago
ok
[ Moonlink.js ]: connection process started
[ Moonlink.js ]: a node is being configured
lavalink.joshsevero.dev:80 is online, and has also been connected
[ @Moonlink.js ]: sending voiceUpdate to lavalink (992231462101323808)
[ Moonlink.Js ]: MoonLink just sent a request to lavalink
[ MoonLink.Js ]: searching songs
[ Moonlink.Js ]: MoonLink just sent a request to lavalink
997410601288605736 997410601288605736
{
guildId: '992231462101323808',
voiceChannel: '997410601288605736',
textChannel: '1067967254337179678',
playing: true,
paused: false,
loop: false,
connected: true
}
C:\Users\T-Gamer\Desktop\discord-bot\index.js:50
player.destroy();
^
TypeError: player.destroy is not a function
at MoonlinkManager.<anonymous> (C:\Users\T-Gamer\Desktop\discord-bot\index.js:50:9)
at MoonlinkManager.emit (node:events:513:28)
at WebSocket.<anonymous> (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\moonlink.js@Moonlink\MoonlinkNodes.js:135:32)
at WebSocket.emit (node:events:513:28) at Receiver.receiverOnMessage (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\websocket.js:1178:20) at Receiver.emit (node:events:513:28) at Receiver.dataMessage (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\receiver.js:528:14) at Receiver.getData (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\receiver.js:446:17) at Receiver.startLoop (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\receiver.js:148:22) at Receiver._write (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\receiver.js:83:10) Node.js v19.2.0
at WebSocket.emit (node:events:513:28) at Receiver.receiverOnMessage (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\websocket.js:1178:20) at Receiver.emit (node:events:513:28) at Receiver.dataMessage (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\receiver.js:528:14) at Receiver.getData (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\receiver.js:446:17) at Receiver.startLoop (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\receiver.js:148:22) at Receiver._write (C:\Users\T-Gamer\Desktop\discord-bot\node_modules\ws\lib\receiver.js:83:10) Node.js v19.2.0
Ae, pelo que eu me lembro
player retorna os status do player
Então faz assim
client.moon.on('trackEnd', async (player, track) => {
client.channels.cache.get(player.textChannel).send('a faixa acabou');
client.moon.players.get(player.guildId).destroy();
});
@SuperPlayerBots
Não sei se tu tá online kskssksk (nunca sei na verdade)
continuing-cyanOP•3y ago
kkk to aqui ainda
ta falando que o track nunca foi usado
apago ele dentro do parenteses?
Track pega também kkks
continuing-cyanOP•3y ago
saquei kkk
parece q agr funfou deixa eu confirmar
aeeeee ta funfando 100%
mano outro problema q to tendo é q nao descobri um jeito bom ainda de como verificar se a pessoa ta na mesma call que o bot ta
sabe algum jeito bom?
Pode usar evento ou usar em no comando de play mesmo
if(interaction.guild.members.me.voice.channelId !== interaction.member.voice.channelId) {
interaction.reply('você está em um canal de voz diferente')
}
Atá
Isso é quando estiver em um canal de voz diferente e estiver tocando
Ele vai responder
continuing-cyanOP•3y ago
è minha ideia é de fazer um if pra avisar ou ate barrar os comandos se o bot tiver tocando e a pessoa tiver em canal diferente
Assem
Mais exato 😏👌
Faz assim então
@SuperPlayerBots
Pode fazer assem
Primeiro
if e pra quando player existir
E se o usuário for diferente do player
E se tiver tocando nesse player
Ele vai avisar
Que tem um player existente e ele está tocando agora
O segundo
E quando bot é diferente do member
Se ele estiver em um canal diferente ele vai avisar
continuing-cyanOP•3y ago
blz, vou ter q dirigir agr, mas hj mais tarde testo
Tenha uma ótima noite
continuing-cyanOP•3y ago
tenha uma otima noite voce tambem
não consegui achar no site do moonlink se tem algum evento que detecta quando o bot é desconectado da call
GG @SuperPlayerBots, you just advanced to level 6!
continuing-cyanOP•3y ago
existe algum?
a esqueci de agradecer isso funcionou, ajudou bastante , vlw
tipo se alguem deconecta o bot sem querer, ele nao se da um alto player.destroy();, oque gera um problema se o bot tiver uma trava nos comandos para que se use somente se o bot tiver na call, porque ai ele nao tem como voltar pra call e nem como dar um stop para acabar a queue
Pra isso você pode usar eventos do próprio discord
Vou fazer aqui pra você
Depois implemento um evento na moonlink
continuing-cyanOP•3y ago
deu erro por causa do evento evento de stop ser ativado depois q esse evento novo destroy o play
Não entendi ksk
continuing-cyanOP•3y ago
pra resolver troque nele de destroy(), pra stop(), sei la pode ser util pros procimos perdidos
q tao começando que nem eu kkk
parece que ao desconectar o bot por ele dar um destroy ele ativa o evento de endtrack q tambem ja tava com um destroy
e como nao tem mais play criado pra destruir da erro
Por isso que eu disse ontem que não é bom usar destroy no trackend
Porque se você destruir
A queue
Não vai funcionar
continuing-cyanOP•3y ago
sim , tem desvantagem mas tambem vantagem
mas so de trocar pra stop aqui o erro que falei é resolvido
Internamente eu posso fazer uma solução mais prática, como usar utils pra não executar o trackEnd, superficial tem que ter maior cuidado
continuing-cyanOP•3y ago
entendo
agora outro problema que to tendo é em acessar a array pra criar um /queue, tem como eu acessar ela usando o Queue.All?
tem sim
continuing-cyanOP•3y ago
mas com eu faria pra pegar por exemplo com ele o tracks[2]
tipo queue.all(tracks[2].title)?
Deixa me lembrar
Que faz um tempinho que não tou usando os bots
?play all i want
added track in queue
Olivia Rodrigo - All I Want (Official Video) is playing now
?play happy
added track in queue
?play lovely
added track in queue
?eval client.moon.players.get(message.guild.id).queue.all
?eval client.moon.players.get(message.guild.id).queue.all?.map(a => a.title)
?eval client.moon.players.get(message.guild.id).queue.all?.map(a => a.title[1])
?eval client.moon.players.get(message.guild.id).queue.all?.map(a => a[0].title)
?eval client.moon.players.get(message.guild.id).queue.all?.map(a => a.title)[1]
Me esqueci as vezes
?eval client.moon.players.get(message.guild.id).queue.all[1]
@SuperPlayerBots
continuing-cyanOP•3y ago
oi
Queue.all retorna uma array
você pode manipular as informações
continuing-cyanOP•3y ago
hum calma
ae deu vlw
Tenha um ótimo dia 🙂