Advertisement
Guest User

Untitled

a guest
Oct 18th, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     if(command === "play") {
  2.  
  3.         const ops = ("node-opus")
  4.      
  5.         const active = new Map();
  6.  
  7.         var options = {
  8.             active: active
  9.         }
  10.          
  11.          
  12.          
  13.          
  14.          
  15.          
  16.             if (!message.member.voiceChannel) return message.channel.send("Connecteer met een spraak kanaal");
  17.          
  18.             // if (message.guild.me.voiceChannel) return message.channel.send("Sorry de bot is al geconecteerd met een spraak kanaal");
  19.          
  20.             if (!args[0]) return message.channel.send("Sorry gelieven ene url mee te geven");
  21.          
  22.             var validate = await ytdl.validateURL(args[0]);
  23.          
  24.             if (!validate) return message.channel.send("Geef een juiste URL op");
  25.          
  26.             var info = await ytdl.getInfo(args[0]);
  27.          
  28.          
  29.             // Verkrijgen van de data als die er al is.
  30.             var data = ops.active.get(message.guild.id) || {};
  31.          
  32.             // Maak een connectie met het kanaal als die er nog niet is.
  33.             if (!data.connection) data.connection = await message.member.voiceChannel.join();
  34.             // Voeg een queue aan de data.
  35.             if (!data.queue) data.queue = [];
  36.             // Geef het ID mee.
  37.             data.guildID = message.guild.id;
  38.          
  39.             // Voeg de liedjes toe aan de lijst met volgende gegevens.
  40.             // Titel, aanvrager, link, welk kanaal aangevraagd.
  41.             data.queue.push({
  42.                 songTitle: info.title,
  43.                 requester: message.author.tag,
  44.                 url: args[0],
  45.                 announceChannel: message.channel.id
  46.             });
  47.          
  48.             // Als nog geen speelt dan roep play op anders gaan we enkel een bericht geven.
  49.             if (!data.dispatcher) {
  50.                 Play(client, ops, data);
  51.             } else {
  52.          
  53.                 message.channel.send(`Toegevoegd aan de queue: ${info.title} | Aangevraagd door: ${message.author.tag}`);
  54.          
  55.             }
  56.          
  57.             // De data opslaan.
  58.             ops.active.set(message.guild.id, data);
  59.          
  60.         }
  61.          
  62.         /**
  63.          *  Om het liedje af te spelen roepen we play op.
  64.          *
  65.          * @param {*} client Gegevens van de bot.
  66.          * @param {*} ops Opties die we meegeven. (Al de liedjes in de queue).
  67.          * @param {*} data De data die we hebben opgevraagd.
  68.          */
  69.         async function Play(client, ops, data) {
  70.          
  71.             // Tekst geven welk liedje dat aan het spelen is.
  72.             client.channels.get(data.queue[0].announceChannel).send(`Nu aan het spelen: ${data.queue[0].songTitle} - Aangevraagd door: ${data.queue[0].requester}`);
  73.          
  74.             // Opties meegeven. Bitrate is voor de duidelijkheid van het liedje.
  75.             var options = { seek: 2, volume: 1, bitrate: 128000 };
  76.          
  77.             // Speel de stream af met de opties.
  78.             data.dispatcher = await data.connection.playStream(ytdl(data.queue[0].url, { filter: "audioonly" }), options);
  79.             // Sla het ID mee op. (Hebben we later nodig voor op te vragen welke liedjes er nog zijn in de queue.)
  80.             data.dispatcher.guildID = data.guildID;
  81.          
  82.             // Kijk na als het einde bereikt is en roep dan de functie Finish op.
  83.             data.dispatcher.once('end', function () {
  84.          
  85.                 Finish(bot, ops, this);
  86.          
  87.             });
  88.          
  89.         }
  90.          
  91.         /**
  92.          * Als het liedje is gedaan dan gaan we eerst nakijken als er nog liedjes zijn en terug optarten
  93.          * als geen liedje meer in lijst, dan stop alles en gooi bot uit kanaal.
  94.          *
  95.          * @param {*} client Gegevens van de bot zelf.
  96.          * @param {*} ops Opties die we meegegeven. (Al de data).
  97.          * @param {*} dispatcher Oproep data mee geven.
  98.          */
  99.         function Finish(client, ops, dispatcher) {
  100.          
  101.             // Data verkrijgen van wat actief is.
  102.             var fetchedData = ops.active.get(dispatcher.guildID);
  103.          
  104.             // Wis het eerste liedje van de lijst.
  105.             fetchedData.queue.shift();
  106.          
  107.             // Als er nog liedjes zijn roep dan play op.
  108.             if (fetchedData.queue.length > 0) {
  109.          
  110.                 ops.active.set(dispatcher.guildID, fetchedData);
  111.          
  112.                 Play(client, ops, fetchedData);
  113.          
  114.             } else { // Geen liedjes meer delete dan alles en haal bot uit kanaal.
  115.          
  116.                 ops.active.delete(dispatcher.guildID);
  117.          
  118.                 var voiceChannel = client.guilds.get(dispatcher.guildID).me.voiceChannel;
  119.          
  120.                 if (voiceChannel) voiceChannel.leave();
  121.          
  122.             }
  123.         }
  124.  
  125. if(command === "leave") {
  126.  
  127. if (!message.member.voiceChannel) return message.channel.send("Gelieve met een spraak kanaal te verbinden.");
  128.  
  129. if (!message.guild.me.voiceChannel) return message.channel.send("Sorry de bot is niet met een spraak kanaal verbonden.");
  130.  
  131. if (message.guild.me.voiceChannelID != message.member.voiceChannelID) return message.channel.send("Sorry je bent niet met hetzelfde kanaal verbonden.");
  132.  
  133. message.guild.me.voiceChannel.leave();
  134.  
  135. message.channel.send("Kanaal aan het verlaten...");    
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement