Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const Discord = require("discord.js");
- const ytdl = require("ytdl-core");
- var fs = require('fs'); //FileSystem
- let config = JSON.parse(fs.readFileSync("./config.json", "utf8")); // Arq. config
- exports.run = async (client, message, args, ops) => {
- if (config[message.guild.id].djonly == true) {
- if (!message.member.roles.some(r=>config[message.guild.id].djroles.includes(r.id))) return message.channel.send({
- embed: {
- "title": "Erro",
- "description": "Neste servidor, o parametro apenasDJ está ligado\nVocê não tem um cargo de dj, então você não pode tocar musica.\n*Para ver a lista de cargos dj, use `" + config[message.guild.id].prefix + "cargodj`*",
- }
- });
- }
- var song = args[0];
- config = JSON.parse(fs.readFileSync("./config.json", "utf8"));
- var streamOptions = {
- seek: 0,
- volume: config[message.guild.id].volume / 100
- };
- if (!message.member.voiceChannel) {
- return message.channel.send({
- embed: {
- "title": "Entre em um canal de voz primeiro!",
- "color": 0xff2222
- }
- }).then(msg => {
- if (config[message.guild.id].delete == 'true') {
- msg.delete(config[message.guild.id].deleteTime);
- }
- });
- }
- if (!song) {
- return message.channel.send({
- embed: {
- "title": "Coloque a URl ou Nome de uma música!",
- "color": 0xff2222
- }
- }).then(msg => {
- if (config[message.guild.id].delete == 'true') {
- msg.delete(config[message.guild.id].deleteTime);
- }
- });
- }
- let validate = await ytdl.validateURL(song);
- if (!validate) {
- let commandFile = require('./pesquisar.js');
- return commandFile.run(client, message, args, ops);
- }
- let info = await ytdl.getInfo(song);
- let data = ops.active.get(message.guild.id) || {};
- if (!data.connection) {
- data.connection = await message.member.voiceChannel.join();
- }
- if (!data.queue) {
- data.queue = [];
- }
- data.guildID = message.guild.id;
- data.queue.push({
- songTitle: info.title,
- requestAuthor: message.author,
- url: song,
- announceChannel: message.channel.id
- });
- if (!data.dispatcher) {
- play(client, ops, data, streamOptions);
- } else {
- message.channel.send(new Discord.RichEmbed()
- .setColor(0x0ea5d3)
- .setAuthor("Sugestão por " + message.author.username, message.author.avatarURL)
- .setDescription("Adicionada a lista **" + info.title + "**")).then(msg => {
- if (config[message.guild.id].delete == 'true') {
- msg.delete(config[message.guild.id].deleteTime);
- }
- });
- }
- ops.active.set(message.guild.id, data);
- }
- async function play(client, ops, data, streamOptions) {
- client.channels.get(data.queue[0].announceChannel).send(new Discord.RichEmbed()
- .setColor(0x0ea5d3)
- .setAuthor("Sugerido por " + data.queue[0].requestAuthor.username, data.queue[0].requestAuthor.avatarURL)
- .setDescription("Tocando agora **" + data.queue[0].songTitle + "**")).then(msg => {
- if (config[data.guildID].delete == 'true') {
- msg.delete(config[data.guildID].deleteTime);
- }
- });
- data.dispatcher = await data.connection.playStream(ytdl(data.queue[0].url, {
- filter: "audioonly"
- }), streamOptions);
- data.dispatcher.guildID = data.guildID;
- data.dispatcher.once('end', function() {
- finish(client, ops, this);
- });
- }
- async function finish(client, ops, dispatcher) {
- let fetched = ops.active.get(dispatcher.guildID);
- fetched.queue.shift();
- if (fetched.queue.length > 0) {
- ops.active.set(dispatcher.guildID, fetched);
- play(client, ops, fetched);
- } else {
- fetched.dispatcher.end();
- ops.active.delete(dispatcher.guildID);
- let vc = client.guilds.get(dispatcher.guildID).me.voiceChannel;
- if (vc) {
- vc.leave();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement