Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2020
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.31 KB | None | 0 0
  1. const Discord = require('discord.js');
  2. const client = new Discord.Client();
  3. const ytdl = require('ytdl-core');
  4. const request = require('request');
  5. const fs = require('fs');
  6. const getYoutubeID = require('get-youtube-id');
  7. //.
  8. const yt_api_key = "AIzaSyDeoIH0u1e72AtfpwSKKOSy3IPp2UHzqi4";
  9. const Canvas = require("canvas");
  10. const jimp = require("jimp");
  11. const moment = require("moment")
  12. //const ytdl = require("ytdl-core");
  13. const { Client, Util } = require('discord.js');
  14. //const getYoutubeID = require('get-youtube-id');
  15. const fetchVideoInfo = require('youtube-info');
  16. const YouTube = require('simple-youtube-api');
  17. const youtube = new YouTube("AIzaSyAdORXg7UZUo7sePv97JyoDqtQVi3Ll0b8");
  18. const queue = new Map();
  19. //const YouTube = require('simple-youtube-api');
  20. var prefix = "!";
  21. //const config = require('./config.json');
  22. //const { Client, Util} = require('discord.js');
  23. client.on('ready', () => {
  24. console.log(`Logged in as ${client.user.tag}!`);
  25. });
  26.  
  27.  
  28.  
  29.  
  30. var prefix = '!'
  31. var color = new Discord.RichEmbed().setColor('#000000').setColor('#36393e')
  32. function e(message, args) {
  33. var embed = new Discord.RichEmbed()
  34. .setColor(color.color)
  35. .setDescription(args)
  36. .setFooter(`By Request of ${message.author.username}`);
  37. message.channel.sendEmbed(embed);
  38. };
  39. //Errors [ function ]
  40. function err(message, args) {
  41. var embed = new Discord.RichEmbed()
  42. .setColor(color.color)
  43. .setAuthor(args, "https://upload.wikimedia.org/wikipedia/commons/thumb/7/74/Feedbin-Icon-error.svg/1000px-Feedbin-Icon-error.svg.png")
  44. message.channel.sendEmbed(embed);
  45. };
  46. //Requested by [ function ]
  47. function ee(message, args) {
  48. var embed = new Discord.RichEmbed()
  49. .setColor(color.color)
  50. .setAuthor(args)
  51. .setFooter(`Requested by ${message.author.username}`);
  52. message.channel.sendEmbed(embed);
  53. };
  54. //Left the voice channel [ function ] ,-,
  55. function L(message, args) {
  56. var embed = new Discord.RichEmbed()
  57. .setColor(color.color)
  58. .setDescription(args)
  59. .setFooter(`By Request of ${message.author.username}`);
  60. message.channel.sendEmbed(embed);
  61. }
  62. //Current [ function ]
  63. function V(message, args) {
  64. var embed = new Discord.RichEmbed()
  65. .setColor(color.color)
  66. .setAuthor(args, "https://www.iconsdb.com/icons/preview/red/volume-up-4-xxl.png")
  67. message.channel.sendEmbed(embed);
  68. }
  69. // For the skip command
  70. function S(message, args) {
  71. var embed = new Discord.RichEmbed()
  72. .setColor(color.color)
  73. .setDescription(args)
  74. message.channel.sendEmbed(embed);
  75. };
  76. function VS(message, args) {
  77. var embed = new Discord.RichEmbed()
  78. .setColor(color.color)
  79. .setDescription(args)
  80. .setFooter("Requires Another Vote.")
  81. message.channel.sendEmbed(embed);
  82. };
  83. function Vs(message, args) {
  84. var embed = new Discord.RichEmbed()
  85. .setColor(color.color)
  86. .setAuthor(args, "https://www.iconsdb.com/icons/preview/red/volume-up-4-xxl.png")
  87. message.channel.sendEmbed(embed);
  88. };
  89. const qs = require('querystring');
  90. const cool = [];
  91. const ms = require('ms')
  92. const fetch = require('node-fetch');
  93. //const request = require('request')
  94.  
  95.  
  96.  
  97. client.on('warn', console.warn);
  98.  
  99. client.on('error', console.error);
  100.  
  101. client.on('ready', () => console.log('I am ready!'));
  102.  
  103. client.on('disconnect', () => console.log('I disconnected!'));
  104.  
  105. client.on('reconnecting', () => console.log('I am disconnecting!'));
  106.  
  107. client.on('voiceStateUpdate', (oldMember, newMember) => {
  108. let newUserChannel = newMember.voiceChannel
  109. let oldUserChannel = oldMember.voiceChannel
  110. const serverQueue = queue.get(oldMember.guild.id);
  111.  
  112.  
  113. if(oldUserChannel === undefined && newUserChannel !== undefined) {
  114. // User joines a voice channel
  115. } else if(newUserChannel === undefined){
  116.  
  117. // User leaves a voice channel
  118. if(oldMember.id === '61633413272888954896'){
  119. return console.log("BOT");
  120. }
  121. else{
  122. if(client.guilds.get(oldMember.guild.id).voiceConnection != null){
  123. if(client.guilds.get(oldMember.guild.id).voiceConnection.channel.id === oldUserChannel.id){
  124. if(oldUserChannel.members.size < 2){
  125. serverQueue.songs = [];
  126. serverQueue.connection.dispatcher.end('No members left in the channel!')
  127. }
  128. }else{
  129. return console.log('not in the same voice channel');
  130. }
  131. }else{
  132. return undefined;
  133. }
  134. }
  135.  
  136.  
  137. }
  138. })
  139. //)//
  140. var PREFIX = 'r'
  141. client.on('message', async msg => { // eslint-disable-line
  142. if (msg.author.bot) return undefined;
  143.  
  144. var PREFIX = 'r'
  145. if (!msg.content.startsWith(PREFIX)) return undefined;
  146. const args = msg.content.split(' ');
  147. const searchString = args.slice(1).join(' ');
  148. const url = args[1];
  149. const serverQueue = queue.get(msg.guild.id);
  150.  
  151. if(msg.content.startsWith(`${PREFIX}play`)){
  152.  
  153. // const perm = voiceChannel.permissionFor(msg.author.id)
  154. // if(!perm.has('CONNECT')); //return msg.channel.send(
  155. // `**This Command Protéction**`)
  156. const voiceChannel = msg.member.voiceChannel;
  157. // if(!msg voiceChannel.permissionFor(msg.author.id)
  158. if(!voiceChannel){
  159. var embedplay1 = new Discord.RichEmbed()
  160. .setTitle(`**Please Connect To A Voice Channel To Play Something!**`)
  161. .setColor([226, 50, 41])
  162. return msg.channel.sendEmbed(embedplay1);
  163. }
  164. const permissions = voiceChannel.permissionsFor(msg.client.user);
  165.  
  166. if(!permissions.has('CONNECT')){
  167. var embedplay2 = new Discord.RichEmbed()
  168. .setTitle(`**I lack the right CONNECT to connect in these Voice Channel!**`)
  169. .setColor([226, 50, 41])
  170. return msg.channel.sendEmbed(embedplay2);
  171. }
  172. if (!permissions.has('SPEAK')){
  173. var embedplay3 = new Discord.RichEmbed()
  174. .setTitle(`**I do not have the right to SPEAK to connect in these Voice Channel!**`)
  175. .setColor([226, 50, 41])
  176. return msg.channel.sendEmbed(embedplay3);
  177. }
  178.  
  179. if(url.match(/^https?:\/\/(www.youtube.com|youtube.com)\/playlist(.*)$/)){
  180. const playlist = await youtube.getPlaylist(url);
  181. const videos = await playlist.getVideos();
  182. for(const video of Object.values(videos)){
  183. const video2 = await youtube.getVideoByID(video.id);
  184. await handleVideo(video2, msg, voiceChannel, true);
  185. }
  186. var embedplay4 = new Discord.RichEmbed()
  187. .setTitle(`**Playlist: ${playlist.title} queued!**`)
  188. .setColor([226, 50, 41])
  189. return msg.channel.sendEmbed(embedplay4);
  190. }else{
  191. try{
  192. var video = await youtube.getVideo(url);
  193. }catch(error){
  194. try{
  195. var videos = await youtube.searchVideos(searchString, 10);
  196. let index = 0;
  197. var embedqueue5 = new Discord.RichEmbed()
  198. .setTitle(`__**Song Play **__`)
  199. .setDescription(`
  200. ${videos.map(video2 => `**${++index}-** ${video2.title}`).join('\n')}
  201. **Please enter a number between 1-10 on,a Song select!**`)
  202. .setColor([226, 50, 41])
  203. msg.channel.sendEmbed(embedqueue5);
  204.  
  205. try{
  206. var response = await msg.channel.awaitMessages(msg2 => msg2.content > 0 && msg2.content < 11, {
  207. maxMatches: 1,
  208. time: 10000,
  209. errors: ['time']
  210. });
  211. }catch(err){
  212. console.error(err);
  213. var embedplay6 = new Discord.RichEmbed()
  214. .setTitle(`**no or invalid number was entered. Demolition of the song selection!**`)
  215. .setColor([226, 50, 41])
  216. return msg.channel.sendEmbed(embedplay6);
  217. }
  218. const videoIndex = parseInt(response.first().content);
  219. var video = await youtube.getVideoByID(videos[videoIndex - 1].id);
  220. }catch(err){
  221. console.error(err);
  222. var embedplay7 = new Discord.RichEmbed()
  223. .setTitle(`**I could find no video!**`)
  224. .setColor([226, 50, 41])
  225. return msg.channel.sendEmbed(embedplay7);
  226. }
  227. }
  228. return handleVideo(video, msg, voiceChannel);
  229. }
  230. } else if (msg.content.startsWith(`${PREFIX}loop`)) {
  231. if (!serverQueue) return err(msg, `You Should Play Something To Use This Command.`);
  232. if (serverQueue && serverQueue.playing) {
  233. if (!msg.member.voiceChannel) return err(msg,`You Should Be in A Voice Channel To Use This Command.`);
  234. if (msg.guild.members.get(msg.member.id).voiceChannel.id !== msg.guild.members.get(client.user.id).voiceChannel.id) return err(msg , `You Should Be in My Voice Channel To Use My Commands.`)
  235. if (serverQueue.loop == false) {
  236. serverQueue.loop = true;
  237. e(msg, `**${serverQueue.songs[0].title}**, will be looped`)
  238. } else if (serverQueue.loop == true) {
  239. serverQueue.loop = false;
  240. e(msg, `**${serverQueue.songs[0].title}**, will not be looped again`)
  241. };
  242. }
  243.  
  244.  
  245. } else if(msg.content.startsWith(`${PREFIX}skip`)) {
  246.  
  247. if(!msg.member.voiceChannel){
  248. var embedskip1 = new Discord.RichEmbed()
  249. .setTitle(`**You are in not in the Voice Channel!**`)
  250. .setColor([226, 50, 41])
  251. return msg.channel.sendEmbed(embedskip1);
  252. }
  253. if(!serverQueue){
  254. var embedskip2 = new Discord.RichEmbed()
  255. .setTitle(`**There is nothing to Skip!**`)
  256. .setColor([226, 50, 41])
  257. return msg.channel.sendEmbed(embedskip2);
  258. }
  259. serverQueue.connection.dispatcher.end('Skip command has been used!');
  260. var embedskip3 = new Discord.RichEmbed()
  261. .setTitle(`**The Bot has been Skipped!**`)
  262. .setColor([226, 50, 41])
  263. return msg.channel.sendEmbed(embedskip3);
  264. }
  265.  
  266. else if (msg.content.startsWith(`${PREFIX}stop`)){
  267.  
  268. if(!msg.member.voiceChannel){
  269. var embedstop1 = new Discord.RichEmbed()
  270. .setTitle(`**you're not in the voice channel!**`)
  271. .setColor([226, 50, 41])
  272. return msg.channel.sendEmbed(embedstop1);
  273. }
  274. if(!serverQueue){
  275. var embedstop2 = new Discord.RichEmbed()
  276. .setTitle(`**There is nothing to stop!**`)
  277. .setColor([226, 50, 41])
  278. return msg.channel.sendEmbed(embedstop2);
  279. }
  280. serverQueue.songs = [];
  281. serverQueue.connection.dispatcher.end('Stop command has been used!');
  282. var embedstop3 = new Discord.RichEmbed()
  283. .setTitle(`**The Bot has been Skipped!**`)
  284. .setColor([226, 50, 41])
  285. return msg.channel.sendEmbed(embedstop3);
  286. }
  287. else if(msg.content.startsWith(`${PREFIX}song`)){
  288.  
  289. if(!serverQueue){
  290. var embedsong1 = new Discord.RichEmbed()
  291. .setTitle(`**It does nothing at the moment!**`)
  292. .setColor([226, 50, 41])
  293. return msg.channel.sendEmbed(embedsong1);
  294. }
  295. var embedsong2 = new Discord.RichEmbed()
  296. .setTitle(`__**${serverQueue.songs[0].title}**__`)
  297. .setThumbnail(serverQueue.songs[0].thumbnail)
  298. .setDescription(`
  299. Von: ${serverQueue.songs[0].channel}
  300. Dauer: ${serverQueue.songs[0].duration}
  301. Link: ${serverQueue.songs[0].url}
  302. `)
  303. .setColor([226, 50, 41])
  304. return msg.channel.sendEmbed(embedsong2);
  305. }
  306.  
  307.  
  308. else if (msg.content.startsWith(`${PREFIX}volume`)) {
  309.  
  310. if (!serverQueue) return err(msg,`You Should Play Something To Use This Command.`);
  311. if (!msg.member.voiceChannel) return err(msg,`You Should Be in A Voice Channel To Use This Command.`);
  312. if (msg.guild.members.get(msg.member.id).voiceChannel.id !== msg.guild.members.get(client.user.id).voiceChannel.id) return err(msg , `You Should Be in My Voice Channel To Use My Commands.`)
  313. if (!args[1]) return V(msg,`The current volume is ${serverQueue.volume}%`);
  314. args[1] = parseInt(args[1]);
  315. if (args[1] > 300 || args[1]<2) return err(msg, `Only allowed from 2 - 300`)
  316. if (isNaN(args[1])) return err(msg, `Only numbers are allowed.`)
  317. if (args[1] == serverQueue.volume) return err(msg, `My Volume is already ${serverQueue.volume}%`)
  318. serverQueue.volume = args[1];
  319. serverQueue.connection.dispatcher.setVolumeLogarithmic(args[1] / 250);
  320. return Vs(msg, `Volume Successfully Changed to ${args[1]}%`);
  321. } else if (msg.content.startsWith(`${PREFIX}repeat`) || msg.content.startsWith(`${PREFIX}rpt`)) {
  322. if (!serverQueue) return err(msg,`You Should Play Something To Use This Command.`);
  323. if (serverQueue) {
  324. if (msg.guild.members.get(msg.member.id).voiceChannel.id !== msg.guild.members.get(client.user.id).voiceChannel.id) return err(msg , `You Should Be in My Voice Channel To Use My Commands.`)
  325. if (!msg.member.voiceChannel) return ee(msg,`You Should Be in A Voice Channel To Use This Command.`);
  326. serverQueue.songs.splice(7, 3, serverQueue.songs[0])
  327. e(msg, `**${serverQueue.songs[0].title}**, Will be repeated`);
  328. return undefined;
  329. }//
  330. if(args[1]>0){
  331. serverQueue.volume = args[1];
  332. serverQueue.connection.dispatcher.setVolume(args[1] / 2000);
  333. serverQueue.mute = false;
  334. var embedvolume3 = new Discord.RichEmbed()
  335. .setTitle(`**The volume is on ${args[1]} set**`)
  336. .setColor([226, 50, 41])
  337. return msg.channel.sendEmbed(embedvolume3);
  338. } else{
  339. var embedvolume4 = new Discord.RichEmbed()
  340. .setTitle(`**Please enter a number >0 on!**`)
  341. .setColor([226, 50, 41])
  342. return msg.channel.sendEmbed(embedvolume4);
  343. }
  344. }
  345. else if(msg.content.startsWith(`${PREFIX}queue`)){
  346.  
  347. if(!serverQueue){
  348. var embedqueue1 = new Discord.RichEmbed()
  349. .setTitle(`**It does nothing at the moment!**`)
  350. .setColor([226, 50, 41])
  351. return msg.channel.sendEmbed(embedqueue1);
  352. }
  353. var embedqueue2 = new Discord.RichEmbed()
  354. .setTitle(`__**Song Queue**__`)
  355. .setDescription(`
  356. ${serverQueue.songs.map(song => `**-** ${song.title}`).join('\n')}
  357. **Playing:** ${serverQueue.songs[0].title}`)
  358. .setColor([226, 50, 41])
  359. return msg.channel.sendEmbed(embedqueue2);
  360. }
  361. else if(msg.content.startsWith(`${PREFIX}pause`)){
  362.  
  363. if(serverQueue && serverQueue.playing) {
  364. serverQueue.playing = false;
  365. serverQueue.connection.dispatcher.pause();
  366. var embedpause1 = new Discord.RichEmbed()
  367. .setTitle(`**The song is stopped!**`)
  368. .setColor([226, 50, 41])
  369. return msg.channel.sendEmbed(embedpause1);
  370. }
  371. var embedpause2 = new Discord.RichEmbed()
  372. .setTitle(`**It does nothing at the moment!**`)
  373. .setColor([226, 50, 41])
  374. return msg.channel.sendEmbed(embedpause2);
  375. }
  376. else if(msg.content.startsWith(`${PREFIX}resume`)){
  377.  
  378. if(serverQueue && !serverQueue.playing){
  379. serverQueue.playing = true;
  380. serverQueue.connection.dispatcher.resume();
  381. var embedresume1 = new Discord.RichEmbed()
  382. .setTitle(`**The song keeps playing on!**`)
  383. .setColor([226, 50, 41])
  384. return msg.channel.sendEmbed(embedresume1);
  385. }
  386. var embedresume2 = new Discord.RichEmbed()
  387. .setTitle(`**It does nothing at the moment!**`)
  388. .setColor([226, 50, 41])
  389. return msg.channel.sendEmbed(embedresume2);
  390. }
  391. else if(msg.content.startsWith(`${PREFIX}mutemusic`)){
  392.  
  393. if(!serverQueue){
  394. var embedmute1 = new Discord.RichEmbed()
  395. .setTitle(`**It does nothing at the moment!**`)
  396. .setColor([226, 50, 41])
  397. return msg.channel.sendEmbed(embedmute1);
  398. }
  399. if(serverQueue.mute){
  400. var embedmute2 = new Discord.RichEmbed()
  401. .setTitle(`**The music Bot is already muted!**`)
  402. .setColor([226, 50, 41])
  403. return msg.channel.sendEmbed(embedmute2);
  404. }
  405. else{
  406. serverQueue.mute = true;
  407. serverQueue.connection.dispatcher.setVolume(0 / 2000);
  408. var embedmute3 = new Discord.RichEmbed()
  409. .setTitle(`**The music Bot was muted!**`)
  410. .setColor([226, 50, 41])
  411. return msg.channel.sendEmbed(embedmute3);
  412. }
  413. }
  414. else if(msg.content.startsWith(`${PREFIX}unmutemusic`)){
  415. /
  416. if(!serverQueue){
  417. var embedunmute1 = new Discord.RichEmbed()
  418. .setTitle(`**It does nothing at the moment!**`)
  419. .setColor([226, 50, 41])
  420. return msg.channel.sendEmbed(embedunmute1);
  421. }
  422. if(!serverQueue.mute){
  423. var embedunmute2 = new Discord.RichEmbed()
  424. .setTitle(`**The Music Bot is already unmuted!**`)
  425. .setColor([226, 50, 41])
  426. return msg.channel.sendEmbed(embedunmute2);
  427. }
  428. else{
  429. serverQueue.mute = false;
  430. serverQueue.connection.dispatcher.setVolume(serverQueue.volume / 2000);
  431. var embedunmute3 = new Discord.RichEmbed()
  432. .setTitle(`**The Music Bot has been unmuted!**`)
  433. .setColor([226, 50, 41])
  434. return msg.channel.sendEmbed(embedunmute3);
  435. }
  436. }
  437. else if(msg.content.startsWith(`${PREFIX}help`)){
  438. var embedhelp = new Discord.RichEmbed()
  439. .setTitle(`__**${msg.guild.name} Commands**__`)
  440. .addField(`${PREFIX}play [رابط المقطع / PlayList ]`, `Usage: **${PREFIX}play** الوصف : لتشغيل مقطع يوتيوب / قائمة تشغيل.`, false)
  441. .addField(`${PREFIX}play اسم المقطع`, `Usage: **${PREFIX}play** لـتشغيل مقطع عبر اسمه.`, false)
  442. .addField(`${PREFIX}skip`, `Usage: **${PREFIX}skip** لتـخطي مقطـع.`, false)
  443. .addField(`${PREFIX}stop`, `Usage: **${PREFIX}stop** لأيقـاف مقطع.`, false)
  444. .addField(`${PREFIX}song`, `Usage: **${PREFIX}song** احصائيات المقطع.`, false)
  445. .addField(`${PREFIX}queue`, `Usage: **${PREFIX}queue** لرؤية قائمة المقاطع المراد تشغيلها.`, false)
  446. .addField(`${PREFIX}volume`, `Usage: **${PREFIX}volume** لكشف حجم الصوت. ***[ Premium Only ]***`, false)
  447. .addField(`${PREFIX}volume [Wert]`, `Usage: **${PREFIX}volume** لتحديد حجم الصوت. ***[ Premium Only ]***`, false)
  448. .addField(`${PREFIX}pause`, `Usage: **${PREFIX}pause** لأيقاف مقطع مؤقتًا.`, false)
  449. .addField(`${PREFIX}resume`, `Usage: **${PREFIX}resume** لاستئناف المقطع المتوقف مؤقتًا.`, false)
  450. .addField(`${PREFIX}mutemusic`, `Usage: **${PREFIX}mutemusic** لكتم البوت.`, false)
  451. .addField(`${PREFIX}unmutemusic`, `Usage: **${PREFIX}unmutemusic** لفك الكتم عن البوت.`, false)
  452. .setColor([226, 50, 41])
  453. .setThumbnail(client.user.avatarURL)
  454. return msg.channel.sendEmbed(embedhelp);
  455. }
  456. return undefined;
  457. });
  458.  
  459.  
  460. async function handleVideo(video, msg, voiceChannel, playlist=false){
  461. const serverQueue = queue.get(msg.guild.id);
  462.  
  463. const song = {
  464. id: video.id,
  465. title: Util.escapeMarkdown(video.title),
  466. url: `https://www.youtube.com/watch?v=${video.id}`,
  467. thumbnail: video.thumbnails.default.url,
  468. channel: video.channel.title,
  469. duration: `${video.duration.hours}hrs : ${video.duration.minutes}min : ${video.duration.seconds}sec`
  470. };
  471. if(!serverQueue){
  472. const queueConstruct = {
  473. textChannel: msg.channel,
  474. voiceChannel: voiceChannel,
  475. connection: null,
  476. songs: [],
  477. volume: 100,
  478. mute: false,
  479. playing: true
  480. };
  481. queue.set(msg.guild.id, queueConstruct);
  482.  
  483. queueConstruct.songs.push(song);
  484.  
  485. try{
  486. var connection = await voiceChannel.join();
  487. queueConstruct.connection = connection;
  488. play(msg.guild, queueConstruct.songs[0]);
  489. }catch(error){
  490. console.log(error);
  491. queue.delete(msg.guild.id);
  492. var embedfunc1 = new Discord.RichEmbed()
  493. .setTitle(`**Bot could not VoiceChannel the joinen!**`)
  494. .setColor([226, 50, 41])
  495. return msg.channel.sendEmbed(embedfunc1);
  496. }
  497. } else {
  498. serverQueue.songs.push(song);
  499. console.log(serverQueue.songs);
  500. if(playlist) return undefined;
  501. else{
  502. var embedfunc2 = new Discord.RichEmbed()
  503. .setTitle(`**${song.title} queued!**`)
  504. .setColor([226, 50, 41])
  505. return msg.channel.sendEmbed(embedfunc2);
  506. }
  507. }
  508. return undefined;
  509. }
  510.  
  511. function play(guild, song){
  512. const serverQueue = queue.get(guild.id);
  513.  
  514. if(!song){
  515. serverQueue.voiceChannel.leave();
  516. queue.delete(guild.id);
  517. return;
  518. }
  519. console.log(serverQueue.songs);
  520. const repeat = {};
  521. const dispatcher = serverQueue.connection.playStream(ytdl(song.url))
  522. .on('end', reason => {
  523. if(reason === 'Stream is not generating quickly enough.') console.log('Song ended');
  524. else console.log(reason);
  525. serverQueue.songs.shift();
  526. setTimeout(() => {
  527. play(guild, serverQueue.songs[0]);
  528. }, 250);
  529. })
  530. .on('error', error => console.log(error));
  531. // const dispatcher = serverQueue.connection.playStream(ytdl(song.url))
  532.  
  533. dispatcher.setVolume(serverQueue.volume / 2000);
  534.  
  535. serverQueue.textChannel.send(`**Now Playing ${song.title} :notes: **`)
  536. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement