Advertisement
Guest User

Untitled

a guest
May 24th, 2019
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const ytdl = require("ytdl-core-discord"), Youtube = require("simple-youtube-api"),
  2.     youtube = new Youtube(process.env.GOOGLE_API_KEY), fetchVideoInfo = require("youtube-info"),
  3.     Discord = require("discord.js"), REGEX_URL = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/i,
  4.    checkUrl = url => REGEX_URL.test(url);
  5.  
  6.    module.exports = {
  7.        run: async function (_, message, args) {
  8.            const embed = new Discord.RichEmbed().setColor("#e83127").setTimestamp(new Date())
  9.                .setFooter(`Musica solicitada por ${message.author.tag}`, message.author.displayAvatarURL);
  10.  
  11.            if (!message.member.voiceChannel) return message.channel.send("Por favor, entre em um canal de voz primeiro!");
  12.            if (args.length === 0) return message.channel.send("Insira uma URL do youtube, ou pesquisa uma musica pelo nome");
  13.            if (!message.member.voiceChannel.permissionsFor(message.guild.me).has("CONNECT")) return message.channel.send(`» **${message.author.username}** | Desculpe, eu não tenho permissão para entrar neste canal! Permissão requirida: \`\`CONNECT\`\`.`);
  14.            if (!message.member.voiceChannel.permissionsFor(message.guild.me).has("SPEAK")) return message.channel.send(`» **${message.author.username}** | Desculpe, eu não tenho permissão para trasmitir áudio neste canal! Permissão requirida: \`\`SPEAK\`\`.`);
  15.  
  16.            const connection = await message.member.voiceChannel.join();
  17.            if (checkUrl(args[0])) {
  18.                const video = await youtube.getVideo(args[0]).catch(e => {
  19.                    console.log(e);
  20.                    message.guild.me.voiceChannel.leave();
  21.                    return message.channel.send("A URL que você inseriu está inválida.");
  22.                }),
  23.                    videoInfo = await fetchVideoInfo(video.id);
  24.                try {
  25.                    const stream = connection.playOpusStream(await ytdl(video.url));
  26.                    embed.addField("📀Música", `[${videoInfo.title}](${videoInfo.url})`)
  27.                    embed.addField("🎧Canal", `[${videoInfo.owner}](https://youtube.com/channel/${videoInfo.channelId})`)
  28.                    embed.addField("📈Visualizações", videoInfo.views, true)
  29.                    embed.addField("📝Comentários", videoInfo.commentCount, true)
  30.                    embed.addField("👍Likes", videoInfo.likeCount, true)
  31.                    embed.addField("👎Dislikes", videoInfo.dislikeCount, true)
  32.                    embed.addField("⏰Duração da música", videoInfo.duration, true)
  33.                    embed.addField("🎭Gênero", videoInfo.genre, true)
  34.                    embed.setThumbnail(videoInfo.thumbnailUrl)
  35.                    message.channel.send(embed);
  36.                    stream.on('end', async () => {
  37.                        await message.member.voiceChannel.leave();
  38.                        await message.channel.send(`A Música terminou, saindo do canal \`\`${message.guild.me.voiceChannel.name}\`\``);
  39.                    });
  40.                    return
  41.                } catch (e) {
  42.                    console.log(e);
  43.                };
  44.            }
  45.            const search = await youtube.searchVideos(args.join(" "), 5).catch(e => {
  46.                console.log(e);
  47.                return message.guild.me.voiceChannel.leave();
  48.            });
  49.            const msg = await message.channel.send(`Você tem \`\`60s\`\` para escolher um número entre 1 a 5 para selecionar a música correspondente a pesquisa\n[1] - ${search[0].title}\n[2] - ${search[1].title}\n[3] - ${search[2].title}\n[4] - ${search[3].title}\n[5] - ${search[4].title}`);
  50.            await msg.react("1⃣");
  51.            await msg.react("2⃣");
  52.            await msg.react("3⃣");
  53.            await msg.react("4⃣");
  54.            await msg.react("5⃣");
  55.  
  56.            const filter = (r, u) => r.me && u.id === message.author.id,
  57.                collector = msg.createReactionCollector(filter, { max: 1, time: 60 * 1000 });
  58.  
  59.            collector.on("collect", async (r) => {
  60.                msg.delete();
  61.                switch (r.emoji.name) {
  62.                    case "1⃣":
  63.                        const videoInfo = await fetchVideoInfo(search[0].id),
  64.                            stream2 = connection.playOpusStream(await ytdl(search[0].url));
  65.                        embed.addField("📀Música", `[${videoInfo.title}](${videoInfo.url})`)
  66.                        embed.addField("🎧Canal", `[${videoInfo.owner}](https://youtube.com/channel/${videoInfo.channelId})`)
  67.                        embed.addField("📈Visualizações", videoInfo.views, true)
  68.                        embed.addField("📝Comentários", videoInfo.commentCount, true)
  69.                        embed.addField("👍Likes", videoInfo.likeCount, true)
  70.                        embed.addField("👎Dislikes", videoInfo.dislikeCount, true)
  71.                        embed.addField("⏰Duração da música", videoInfo.duration, true)
  72.                        embed.addField("🎭Gênero", videoInfo.genre, true)
  73.                        embed.setThumbnail(videoInfo.thumbnailUrl)
  74.                        message.channel.send(embed);
  75.                        stream2.on('end', async () => {
  76.                            await message.member.voiceChannel.leave();
  77.                            await message.channel.send(`A Música terminou, saindo do canal \`\`${message.guild.me.voiceChannel.name}\`\``);
  78.                        });
  79.                        break;
  80.                    case "2⃣":
  81.                        const videoInfo = await fetchVideoInfo(search[1].id),
  82.                            stream3 = connection.playOpusStream(await ytdl(search[1].url));
  83.                        embed.addField("📀Música", `[${videoInfo.title}](${videoInfo.url})`)
  84.                        embed.addField("🎧Canal", `[${videoInfo.owner}](https://youtube.com/channel/${videoInfo.channelId})`)
  85.                        embed.addField("📈Visualizações", videoInfo.views, true)
  86.                        embed.addField("📝Comentários", videoInfo.commentCount, true)
  87.                        embed.addField("👍Likes", videoInfo.likeCount, true)
  88.                        embed.addField("👎Dislikes", videoInfo.dislikeCount, true)
  89.                        embed.addField("⏰Duração da música", videoInfo.duration, true)
  90.                        embed.addField("🎭Gênero", videoInfo.genre, true)
  91.                        embed.setThumbnail(videoInfo.thumbnailUrl)
  92.                        message.channel.send(embed);
  93.                        stream3.on('end', async () => {
  94.                            await message.member.voiceChannel.leave();
  95.                            await message.channel.send(`A Música terminou, saindo do canal \`\`${message.guild.me.voiceChannel.name}\`\``);
  96.                        });
  97.                        break;
  98.                    case "3⃣":
  99.                        const videoInfo = await fetchVideoInfo(search[2].id),
  100.                            stream4 = connection.playOpusStream(await ytdl(search[2].url));
  101.                        embed.addField("📀Música", `[${videoInfo.title}](${videoInfo.url})`)
  102.                        embed.addField("🎧Canal", `[${videoInfo.owner}](https://youtube.com/channel/${videoInfo.channelId})`)
  103.                        embed.addField("📈Visualizações", videoInfo.views, true)
  104.                        embed.addField("📝Comentários", videoInfo.commentCount, true)
  105.                        embed.addField("👍Likes", videoInfo.likeCount, true)
  106.                        embed.addField("👎Dislikes", videoInfo.dislikeCount, true)
  107.                        embed.addField("⏰Duração da música", videoInfo.duration, true)
  108.                        embed.addField("🎭Gênero", videoInfo.genre, true)
  109.                        embed.setThumbnail(videoInfo.thumbnailUrl)
  110.                        message.channel.send(embed);
  111.                        stream4.on('end', async () => {
  112.                            await message.member.voiceChannel.leave();
  113.                            await message.channel.send(`A Música terminou, saindo do canal \`\`${message.guild.me.voiceChannel.name}\`\``);
  114.                        });
  115.                        break;
  116.                    case "4⃣":
  117.                        const videoInfo = await fetchVideoInfo(search[3].id),
  118.                            stream5 = connection.playOpusStream(await ytdl(search[3].url));
  119.                        embed.addField("📀Música", `[${videoInfo.title}](${videoInfo.url})`)
  120.                        embed.addField("🎧Canal", `[${videoInfo.owner}](https://youtube.com/channel/${videoInfo.channelId})`)
  121.                        embed.addField("📈Visualizações", videoInfo.views, true)
  122.                        embed.addField("📝Comentários", videoInfo.commentCount, true)
  123.                        embed.addField("👍Likes", videoInfo.likeCount, true)
  124.                        embed.addField("👎Dislikes", videoInfo.dislikeCount, true)
  125.                        embed.addField("⏰Duração da música", videoInfo.duration, true)
  126.                        embed.addField("🎭Gênero", videoInfo.genre, true)
  127.                        embed.setThumbnail(videoInfo.thumbnailUrl)
  128.                        message.channel.send(embed);
  129.                        stream5.on('end', async () => {
  130.                            await message.member.voiceChannel.leave();
  131.                            await message.channel.send(`A Música terminou, saindo do canal \`\`${message.guild.me.voiceChannel.name}\`\``);
  132.                        });
  133.                        break;
  134.                    case "5⃣":
  135.                        const videoInfo = await fetchVideoInfo(search[4].id),
  136.                            stream6 = connection.playOpusStream(await ytdl(search[4].url));
  137.                        embed.addField("📀Música", `[${videoInfo.title}](${videoInfo.url})`)
  138.                        embed.addField("🎧Canal", `[${videoInfo.owner}](https://youtube.com/channel/${videoInfo.channelId})`)
  139.                        embed.addField("📈Visualizações", videoInfo.views, true)
  140.                        embed.addField("📝Comentários", videoInfo.commentCount, true)
  141.                        embed.addField("👍Likes", videoInfo.likeCount, true)
  142.                        embed.addField("👎Dislikes", videoInfo.dislikeCount, true)
  143.                        embed.addField("⏰Duração da música", videoInfo.duration, true)
  144.                        embed.addField("🎭Gênero", videoInfo.genre, true)
  145.                        embed.setThumbnail(videoInfo.thumbnailUrl)
  146.                        message.channel.send(embed);;
  147.                        stream6.on('end', async () => {
  148.                            await message.member.voiceChannel.leave();
  149.                            await message.channel.send(`A Música terminou, saindo do canal \`\`${message.guild.me.voiceChannel.name}\`\``);
  150.                        });
  151.                        break;
  152.                };
  153.            });
  154.        },
  155.        aliases: ["tocar"],
  156.        category: "Música",
  157.        description: "Tocar uma música"
  158.    };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement