· 6 years ago · Mar 23, 2020, 06:24 PM
1var discord = require('discord.js')
2var ytdl = require('ytdl-core');
3var info = require('youtube-info');
4var api = require("simple-youtube-api");
5var convert = require('convert-seconds');
6
7var config;
8var arquivo = require('./queue.js');
9var musica2;
10var numero = 0
11var pl = "false";
12var musica = null;
13var resultado = null;
14var key = new api('AIzaSyBuUq1V-pQDS-tL3HX6F4omxZNXQIVbnDw')
15
16exports.run = (client, message, args) => {
17 var conteudo = args.slice(0).join(" ").trim();
18 const voiceChannel = message.member.voiceChannel;
19
20 if (!voiceChannel)return message.channel.send(`<:Akura_info:690506365390684171> **|** Kon'nichiwa **${message.author.username}**, entre em um canal de voz.`)
21 if (!conteudo.length)return message.channel.send(`<:Akura_info:690506365390684171> **|** Kon'nichiwa **${message.author.username}**, coloque alguma música para eu pesquisar`)
22 message.delete();
23var sla = "<:Akura_pepeMusic:691017094237782066> » Tocando a música no canal: " + voiceChannel.name
24 if(conteudo.indexOf("https://www.youtube.com/watch?v=") != "-1"||conteudo.indexOf("http://youtu.be/") != "-1"|| conteudo.indexOf("https://www.youtube.com/playlist?list=")!= "-1"){
25 pl = "false";
26 if(conteudo.indexOf("https://www.youtube.com/watch?v=") != "-1"){
27 musica = conteudo.replace("https://www.youtube.com/watch?v=","")
28 video()
29 }if(conteudo.indexOf("http://youtu.be/") != "-1"){
30 musica = conteudo.replace("http://youtu.be/","")
31 video()
32 }
33function video(){
34key.getVideoByID(musica).then(function(sucesso){
35tocar()
36},function(fracasso){
37 message.channel.send("pesquisa não encontrada!")
38 return;
39
40})
41}
42if(conteudo.indexOf("https://www.youtube.com/playlist?list=")!= "-1"){
43pl = "true";
44tocar()
45}}else{
46 pl = "false";
47 key.searchVideos(conteudo,10).then(function(sucesso){
48 if(!sucesso.length){
49 var embed = new discord.RichEmbed()
50 .setColor("#000000")
51 .setDescription("Não achei nenhum resultado para: \`" + conteudo + "\`");
52
53 message.channel.send(embed)
54 return;
55
56 }
57
58 var embed = new discord.RichEmbed()
59
60
61 .setDescription(`${sucesso.map(musica1=>`**${++numero}** - \`${musica1.title}\``).join("\n")} \n\n*Digite um número para escolher a música*`)
62 .setThumbnail(message.author.avatarURL)
63 .setColor("#000000");
64 message.channel.send(embed)
65numero = 0;
66 message.channel.awaitMessages(message1=> Number(message1.content) > 0 && Number(message1.content) <= 10 && message1.author.id == message.author.id && sucesso[Number(message1.content) - 1] ,{
67 maxMatches:1,
68 time: 30000 ,
69 errors: ['time']
70 }).then(function(resultado){
71
72musica = sucesso[Number(resultado.first().content) - 1].id
73tocar()
74
75 },function(falhou){
76 message.channel.send(`<:Akura_info:690506365390684171> **|** Você não escolheu nenhuma opção em 30 segundos.`)
77 })
78 })
79}
80
81async function tocar(){
82
83 if(!voiceChannel.permissionsFor(client.user.id).has('CONNECT'))return message.reply("eu não consigo conectar-me nesse canal.")
84 if(!voiceChannel.permissionsFor(client.user.id).has("SPEAK"))return message.reply("eu não consigo falar nesse canal de voz.")
85 if(message.guild.members.get(client.user.id).voiceChannel == null){
86 voiceChannel.join().then(function(canal){
87 if(arquivo.queue.get(message.guild.id) == null){
88 config = {
89 guild: message.guild.id,
90 channel: canal,
91 canal: message.channel.id,
92 som: {
93 titulo: [],
94 id: []
95 },
96 connection: null
97 }
98 arquivo.queue.set(message.guild.id,config)
99 t()
100 }else{
101 t()
102 }
103 },function(falha){
104 message.channel.send("<:Akura_errado:691170605361397762> **|** Eu não consegui conectar-me ao seu canal de voz!")
105 return;
106 })
107 }else{
108 if(voiceChannel !== message.guild.members.get(client.user.id).voiceChannel) return message.reply("para escutar a musica, entre no canal que eu estou dando batidões e use o comando novamente.")
109 if(arquivo.queue.get(message.guild.id) == null){
110 config = {
111 guild: message.guild.id,
112 channel: message.guild.members.get(client.user.id).voiceChannel,
113 canal: message.channel.id,
114 som: {
115 titulo: [],
116 id: []
117 },
118 connection: null
119 }
120 arquivo.queue.set(message.guild.id,config)
121 t()
122 }else{
123 t()
124 }
125 }
126function t(){
127 if(pl == "false"){
128 if(arquivo.queue.get(message.guild.id).som.id[0]){
129 sla = "<:Akura_pepeMusic:691017094237782066> **|** Uma musica foi adicionada na queue do canal: " + voiceChannel.name
130 }
131 info(musica,function(erro,music){
132 if(erro){
133 console.log(erro)
134 return;
135 }
136var embed = new discord.RichEmbed()
137.setAuthor(`Música adicionada à fila`, message.author.avatarURL)
138.setDescription(`**[${music.title}](${music.url})**`)
139.setThumbnail(music.thumbnailUrl, true)
140.addField("<:Akura_youtube:691038648560254997> Canal",music.owner, true)
141.addField(":eyes: Visualizações",music.views)
142.addField("<a:Akura_like:689563594639015937> Likes",music.likeCount, true)
143.addField("<a:Akura_deslike:689563666785501250> Deslikes",music.dislikeCount, true)
144.setColor("#a85c32")
145
146message.channel.send(embed)
147
148 if (arquivo.queue.get(message.guild.id).som.id[0] == null){
149 arquivo.queue.get(message.guild.id).som.id.push(music.videoId)
150 arquivo.queue.get(message.guild.id).som.titulo.push(music.title)
151 play("https://www.youtube.com/watch?v="+music.videoId)
152 } else {
153 arquivo.queue.get(message.guild.id).som.id.push(music.videoId)
154 arquivo.queue.get(message.guild.id).som.titulo.push(music.title)
155 }
156 })
157 }else{
158 key.getPlaylist(conteudo).then(function(playlist){
159 playlist.getVideos().then(sucess=>{
160 for(var i = 0;sucess[i] ;i++){
161 if(arquivo.queue.get(message.guild.id).som.id[0] == null){
162 arquivo.queue.get(message.guild.id).som.id.push(sucess[i].id)
163 arquivo.queue.get(message.guild.id).som.titulo.push(sucess[i].title)
164 play("https://www.youtube.com/watch?v="+sucess[i].id)
165 }else{
166 arquivo.queue.get(message.guild.id).som.id.push(sucess[i].id)
167 arquivo.queue.get(message.guild.id).som.titulo.push(sucess[i].title)
168 }
169 }
170 message.channel.send("<:Akura_pepeMusic:691017094237782066> **|** Música da playlist adicionada na queue.")
171 })
172 },function(erro){
173 message.channel.send("<:Akura_errado:691170605361397762> **|** Playlist não encontrada")
174 return;
175 })
176 }
177 async function play(music1){
178 musica2 = await arquivo.queue.get(message.guild.id).channel.playStream(ytdl(music1,{ filter: 'audioonly' }), {volume: 0.5, passes: 3})
179 arquivo.queue.get(message.guild.id).connection = musica2;
180 await arquivo.queue.get(message.guild.id).connection.on("end",function(reason){
181 if (reason == null){
182 play("https://www.youtube.com/watch?v="+arquivo.queue.get(message.guild.id).som.id[0])
183 }else{
184 arquivo.queue.get(message.guild.id).som.id.shift()
185 arquivo.queue.get(message.guild.id).som.titulo.shift()
186 if(arquivo.queue.get(message.guild.id).som.id[0]){
187 play("https://www.youtube.com/watch?v="+arquivo.queue.get(message.guild.id).som.id[0])
188 message.channel.send("Tocando a música " + arquivo.queue.get(message.guild.id).som.titulo[0])
189 }else{
190 var fim = new discord.RichEmbed()
191 .setDescription("Lista de músicas finalizada! Espero que tenha gostado de usar meus comandos de música.")
192 .setColor('#0000')
193
194 client.guilds.get(arquivo.queue.get(message.guild.id).guild).channels.get(arquivo.queue.get(message.guild.id).canal).send(fim);
195 arquivo.queue.get(message.guild.id).channel.disconnect()
196 arquivo.queue.delete(message.guild.id)
197 }
198 }
199 })
200 }
201 }
202 }
203}
204
205exports.help = {
206 name: 'play'
207}