Advertisement
Guest User

Untitled

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