Advertisement
Guest User

Bot

a guest
Oct 14th, 2019
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.28 KB | None | 0 0
  1. const Discord = require('discord.js');
  2. const {
  3. prefix,
  4. token,
  5. } = require('./config.json');
  6. const ytdl = require('ytdl-core');
  7.  
  8. const client = new Discord.Client();
  9.  
  10. const queue = new Map();
  11.  
  12. client.once('listo', () => {
  13. console.log('Listo!');
  14. });
  15.  
  16. client.once('reconectando', () => {
  17. console.log('Reconectando!');
  18. });
  19.  
  20. client.once('desconectado', () => {
  21. console.log('Desconectado!');
  22. });
  23.  
  24. client.on('message', async message => {
  25. if (message.author.bot) return;
  26. if (!message.content.startsWith(prefix)) return;
  27.  
  28. const serverQueue = queue.get(message.guild.id);
  29.  
  30. if (message.content.startsWith(`${prefix}play`)) {
  31. execute(message, serverQueue);
  32. return;
  33. } else if (message.content.startsWith(`${prefix}skip`)) {
  34. skip(message, serverQueue);
  35. return;
  36. } else if (message.content.startsWith(`${prefix}stop`)) {
  37. stop(message, serverQueue);
  38. return;
  39. } else {
  40. message.channel.send('Tienes que poner un comando valido!')
  41. }
  42. });
  43.  
  44. async function execute(message, serverQueue) {
  45. const args = message.content.split(' ');
  46.  
  47. const voiceChannel = message.member.voiceChannel;
  48. if (!voiceChannel) return message.channel.send('Tu tienes que estar en el canal de voz para poner musica!');
  49. const permissions = voiceChannel.permissionsFor(message.client.user);
  50. if (!permissions.has('CONNECT') || !permissions.has('SPEAK')) {
  51. return message.channel.send('Necesito los permisos para unirme a tu canal de voz!');
  52. }
  53.  
  54. const songInfo = await ytdl.getInfo(args[1]);
  55. const song = {
  56. title: songInfo.title,
  57. url: songInfo.video_url,
  58. };
  59.  
  60. if (!serverQueue) {
  61. const queueContruct = {
  62. textChannel: message.channel,
  63. voiceChannel: voiceChannel,
  64. connection: null,
  65. songs: [],
  66. volume: 5,
  67. playing: true,
  68. };
  69.  
  70. queue.set(message.guild.id, queueContruct);
  71.  
  72. queueContruct.songs.push(song);
  73.  
  74. try {
  75. var connection = await voiceChannel.join();
  76. queueContruct.connection = connection;
  77. play(message.guild, queueContruct.songs[0]);
  78. } catch (err) {
  79. console.log(err);
  80. queue.delete(message.guild.id);
  81. return message.channel.send(err);
  82. }
  83. } else {
  84. serverQueue.songs.push(song);
  85. console.log(serverQueue.songs);
  86. return message.channel.send(`${song.title} Se ha añadido a la lista!`);
  87. }
  88.  
  89. }
  90.  
  91. function skip(message, serverQueue) {
  92. if (!message.member.voiceChannel) return message.channel.send('Tienes que estar en un canal de voz!');
  93. if (!serverQueue) return message.channel.send('No hay una cancion que pueda skipear!');
  94. serverQueue.connection.dispatcher.end();
  95. }
  96.  
  97. function stop(message, serverQueue) {
  98. if (!message.member.voiceChannel) return message.channel.send('Tu tienes que estar en un canal de voz para parar la musica.');
  99. serverQueue.songs = [];
  100. serverQueue.connection.dispatcher.end();
  101. }
  102.  
  103. function play(guild, song) {
  104. const serverQueue = queue.get(guild.id);
  105.  
  106. if (!song) {
  107. serverQueue.voiceChannel.leave();
  108. queue.delete(guild.id);
  109. return;
  110. }
  111.  
  112. const dispatcher = serverQueue.connection.playStream(ytdl(song.url))
  113. .on('end', () => {
  114. console.log('Musica finalizada!');
  115. serverQueue.songs.shift();
  116. play(guild, serverQueue.songs[0]);
  117. })
  118. .on('error', error => {
  119. console.error(error);
  120. });
  121. dispatcher.setVolumeLogarithmic(serverQueue.volume / 5);
  122. }
  123.  
  124. client.login(token);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement