Advertisement
WoLF_UsA

2oLF

Mar 17th, 2019
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.42 KB | None | 0 0
  1. const ytdl = require("ytdl-core");
  2. const { Client, Util } = require('discord.js');
  3. const getYoutubeID = require('get-youtube-id');
  4. const fetchVideoInfo = require('youtube-info');
  5. const YouTube = require('simple-youtube-api');
  6. const youtube = new YouTube("AIzaSyAdORXg7UZUo7sePv97JyoDqtQVi3Ll0b8");
  7. const queue = new Map();
  8.  
  9.  
  10.  
  11.  
  12. client.on('message', async msg => {
  13. if (msg.author.bot) return undefined;
  14. if (!msg.content.startsWith(prefix)) return undefined;
  15. const args = msg.content.split(' ');
  16. const searchString = args.slice(1).join(' ');
  17. const url = args[1] ? args[1] .replace(/<(.+)>/g, '$1') : '';
  18. const serverQueue = queue.get(msg.guild.id);
  19. let command = msg.content.toLowerCase().split(" ")[0];
  20. command = command.slice(prefix.length)
  21. if (command === `play`) {
  22. const voiceChannel = msg.member.voiceChannel;
  23. if (!voiceChannel) return msg.channel.send('يجب توآجد حضرتك بروم صوتي .');
  24. const permissions = voiceChannel.permissionsFor(msg.client.user);
  25. if (!permissions.has('CONNECT')) {
  26. return msg.channel.send('لا يتوآجد لدي صلاحية للتكلم بهذآ الروم');
  27. }
  28. if (!permissions.has('SPEAK')) {
  29. return msg.channel.send('لا يتوآجد لدي صلاحية للتكلم بهذآ الروم');
  30. }
  31.  
  32. if (!permissions.has('EMBED_LINKS')) {
  33. return msg.channel.sendMessage("**يجب توآفر برمشن `EMBED LINKS`لدي **rl")
  34. }
  35.  
  36. if (url.match(/^https?:\/\/(www.youtube.com|youtube.com)\/playlist(.*)$/)) {
  37. const playlist = await youtube.getPlaylist(url);
  38. const videos = await playlist.getVideos();
  39. for (const video of Object.values(videos)) {
  40. const video2 = await youtube.getVideoByID(video.id);
  41. await handleVideo(video2, msg, voiceChannel, true);
  42. }
  43. return msg.channel.send(` **${playlist.title}** تم الإضآفة إلى قأئمة التشغيل`);
  44. } else {
  45. try {
  46.  
  47. var video = await youtube.getVideo(url);
  48.  
  49. } catch (error) {
  50. try {
  51. var fast = {};
  52. var videos = await youtube.searchVideos(searchString, 10);
  53. let index = 0;
  54. const embed1 = new Discord.RichEmbed()
  55. .setDescription(`**الرجآء من حضرتك إختيآر رقم المقطع** :
  56. ${videos.map(video2 => `[**${++index}**] **${video2.title}**`).join('\n')}`)
  57. .setFooter(`${msg.guild.name}`)
  58. .setThumbnail('https://e.top4top.net/p_1001lsv3w1.png')
  59.  
  60. msg.channel.sendEmbed(embed1).then(message =>{
  61.  
  62. message.delete(15000)
  63.  
  64. });
  65. try {
  66. var response = await msg.channel.awaitMessages(msg2 => msg2.content > 0 && msg2.content < 11, {
  67. maxMatches: 1,
  68. time: 20000,
  69. errors: ['time']
  70. })
  71.  
  72. }catch(err) {
  73. console.error(err);
  74. return msg.channel.send('لم يتم إختيآر مقطع صوتي');
  75. }
  76. const videoIndex = parseInt(response.first().content);
  77. var video = await youtube.getVideoByID(videos[videoIndex - 1].id);
  78. } catch (err) {
  79. console.error(err);
  80. return msg.channel.send(':x: لا يتوفر نتآئج بحث ');
  81. }
  82. }
  83.  
  84. return handleVideo(video, msg, voiceChannel);
  85. }
  86. } else if (command === `skip`) {
  87. if (!msg.member.voiceChannel) return msg.channel.send('أنت لست بروم صوتي .');
  88. if (!serverQueue) return msg.channel.send('لا يتوفر مقطع لتجآوزه');
  89. serverQueue.connection.dispatcher.end('تم تجآوز هذآ المقطع');
  90. return undefined;
  91. } else if (command === `stop`) {
  92. if (!msg.member.voiceChannel) return msg.channel.send('أنت لست بروم صوتي .');
  93. if (!serverQueue) return msg.channel.send('لا يتوفر مقطع لإيقآفه');
  94. serverQueue.songs = [];
  95. serverQueue.connection.dispatcher.end('تم إيقآف هذآ المقطع');
  96. return undefined;
  97. } else if (command === `vol`) {
  98. if (!msg.member.voiceChannel) return msg.channel.send('أنت لست بروم صوتي .');
  99. if (!serverQueue) return msg.channel.send('لا يوجد شيء شغآل.');
  100. if (!args[1]) return msg.channel.send(`:loud_sound: مستوى الصوت **${serverQueue.volume}**`);
  101. serverQueue.volume = args[1];
  102. serverQueue.connection.dispatcher.setVolumeLogarithmic(args[1] / 50);
  103. return msg.channel.send(`:speaker: تم تغير الصوت الي **${args[1]}**`);
  104. } else if (command === `np`) {
  105. if (!serverQueue) return msg.channel.send('لا يوجد شيء حالي ف العمل.');
  106. const embedNP = new Discord.RichEmbed()
  107. .setDescription(`:notes: الان يتم تشغيل : **${serverQueue.songs[0].title}**`)
  108. return msg.channel.sendEmbed(embedNP);
  109. } else if (command === `replay`) {
  110. if (!serverQueue) return msg.channel.send('لا يوجد شيء حالي ف العمل.');
  111. const embedNP = new Discord.RichEmbed()
  112. .setDescription(`سيتم اعاده تشغيل الفديو :**${serverQueue.songs[0].title}**`)
  113. msg.channel.send({embed: embedNP})
  114. return handleVideo(video, msg, msg.member.voiceChannel);
  115.  
  116. } else if (command === `queue`) {
  117. if (!serverQueue) return msg.channel.send('لا يوجد شيء حالي ف العمل.');
  118. let index = 0;
  119. const embedqu = new Discord.RichEmbed()
  120. .setDescription(`**Songs Queue**
  121. ${serverQueue.songs.map(song => `**${++index} -** ${song.title}`).join('\n')}
  122. **الان يتم تشغيل** ${serverQueue.songs[0].title}`)
  123. return msg.channel.sendEmbed(embedqu);
  124. } else if (command === `pause`) {
  125. if (serverQueue && serverQueue.playing) {
  126. serverQueue.playing = false;
  127. serverQueue.connection.dispatcher.pause();
  128. return msg.channel.send('تم إيقاف الموسيقى مؤقتا!');
  129. }
  130. return msg.channel.send('لا يوجد شيء حالي ف العمل.');
  131. } else if (command === "resume") {
  132. if (serverQueue && !serverQueue.playing) {
  133. serverQueue.playing = true;
  134. serverQueue.connection.dispatcher.resume();
  135. return msg.channel.send('استأنفت الموسيقى بالنسبة لك !');
  136. }
  137. return msg.channel.send('لا يوجد شيء حالي في العمل.');
  138. }
  139.  
  140. return undefined;
  141. async function handleVideo(video, msg, voiceChannel, playlist = false) {
  142. const serverQueue = queue.get(msg.guild.id);
  143. const song = {
  144. id: video.id,
  145. title: Util.escapeMarkdown(video.title),
  146. url: `https://www.youtube.com/watch?v=${video.id}`,
  147. time:`${video.duration.hours}:${video.duration.minutes}:${video.duration.seconds}`,
  148. eyad:`${video.thumbnails.high.url}`,
  149. best:`${video.channel.title}`,
  150. bees:`${video.raw.snippet.publishedAt}`,
  151. shahd:`${video.raw.kind}`,
  152. zg:`${video.raw.snippet.channelId}`,
  153. views:`${video.raw.views}`,
  154. like:`${video.raw.likeCount}`,
  155. dislike:`${video.raw.dislikeCount}`,
  156. hi:`${video.raw.id}`
  157. };
  158. if (!serverQueue) {
  159. const queueConstruct = {
  160. textChannel: msg.channel,
  161. voiceChannel: voiceChannel,
  162. connection: null,
  163. songs: [],
  164. volume: 5,
  165. playing: true
  166. };
  167. queue.set(msg.guild.id, queueConstruct);
  168. queueConstruct.songs.push(song);
  169. try {
  170. var connection = await voiceChannel.join();
  171. queueConstruct.connection = connection;
  172. play(msg.guild, queueConstruct.songs[0]);
  173. } catch (error) {
  174. console.error(`I could not join the voice channel: ${error}`);
  175. queue.delete(msg.guild.id);
  176. return msg.channel.send(`لا أستطيع دخول هذآ الروم ${error}`);
  177. }
  178. } else {
  179. serverQueue.songs.push(song);
  180. console.log(serverQueue.songs);
  181. if (playlist) return undefined;
  182. else return msg.channel.send(` **${song.title}** تم اضافه الاغنية الي القائمة!`);
  183. }
  184. return undefined;
  185. }
  186.  
  187. function play(guild, song) {
  188. const serverQueue = queue.get(guild.id);
  189.  
  190. if (!song) {
  191. serverQueue.voiceChannel.leave();
  192. queue.delete(guild.id);
  193. return;
  194. }
  195. console.log(serverQueue.songs);
  196. const dispatcher = serverQueue.connection.playStream(ytdl(song.url))
  197. .on('end', reason => {
  198. if (reason === 'Stream is not generating quickly enough.') console.log('Song ended.');
  199. else console.log(reason);
  200. serverQueue.songs.shift();
  201. play(guild, serverQueue.songs[0]);
  202. })
  203. .on('error', error => console.error(error));
  204. dispatcher.setVolumeLogarithmic(serverQueue.volume / 5);
  205. fetchVideoInfo(`${song.hi}`, function (err, idk) {
  206. if (err) throw new Error(err);
  207. console.log( idk);
  208. const yyyy = {}
  209. if(!yyyy[msg.guild.id]) yyyy[msg.guild.id] = {
  210. like: `${ idk.likeCount}`,
  211. dislike: `${ idk.dislikeCount}`
  212. }
  213. serverQueue.textChannel.send({embed : new Discord.RichEmbed()
  214. .setTitle(`**${ idk.title}**`)
  215. .setURL( idk.url)
  216. .addField('Time The Video :' , `${song.time}`, true)
  217. .addField('Channel Name :' , `${song.best}`, true)
  218. .addField('Channel ID :' , `${song.zg}`, true)
  219. .addField('Video Created at :' , `${ idk.datePublished}`, true)
  220. .addField('Views :' , `${ idk.views}`, true)
  221. .addField('Like👍 :' , `${ idk.likeCount}`, true)
  222. .addField('dislike👎 :' , `${ idk.dislikeCount}`, true)
  223. .addField('comments :' , `${ idk.commentCount}`, true)
  224. .setImage(`${song.eyad}`)
  225. .setThumbnail('http://cdn.akhbaar24.com/430e061a-f89a-43c7-86d9-82fae5f7c495.jpg')
  226. .setColor('#ff0000')
  227. .setTimestamp()
  228. }).then(love => {
  229. love.react('👍').then(r=>{
  230. love.react('👎').then(r =>{
  231. love.react('🙌').then(r=> {
  232. let likee = (reaction, user) => reaction.emoji.name === '👍' && user.id === msg.author.id;
  233. let dislikee = (reaction, user) => reaction.emoji.name === '👎' && user.id === msg.author.id;
  234. let cnn = (reaction, user) => reaction.emoji.name === '🙌' && user.id === msg.author.id;
  235.  
  236. let ll = love.createReactionCollector(likee , {max:5});
  237. let dd = love.createReactionCollector(dislikee , {max:5});
  238. let cn = love.createReactionCollector(cnn , {max:5});
  239.  
  240. ll.on("collect", r => {
  241. yyyy[msg.guild.id].like++;
  242. love.edit({embed : new Discord.RichEmbed()
  243. .setTitle(`**${ idk.title}**`)
  244. .setURL( idk.url)
  245. .addField('Time The Video :' , `${song.time}`, true)
  246. .addField('Channel Name :' , `${song.best}`, true)
  247. .addField('Channel ID :' , `${song.zg}`, true)
  248. .addField('Video Created at :' , `${ idk.datePublished}`, true)
  249. .addField('Views :' , `${ idk.views}`, true)
  250. .addField('Like👍 :' , `${yyyy[msg.guild.id].like}`, true)
  251. .addField('dislike👎 :' , `${ idk.dislikeCount}`, true)
  252. .addField('comments :' , `${ idk.commentCount}`, true)
  253. .setImage(`${song.eyad}`)
  254. .setThumbnail('http://cdn.akhbaar24.com/430e061a-f89a-43c7-86d9-82fae5f7c495.jpg')
  255. .setColor('#ff0000')
  256. .setTimestamp()
  257. });
  258. })
  259.  
  260. dd.on("collect", r => {
  261. yyyy[msg.guild.id].dislike++;
  262. love.edit({embed : new Discord.RichEmbed()
  263. .setTitle(`**${ idk.title}**`)
  264. .setURL( idk.url)
  265. .addField('Time The Video :' , `${song.time}`, true)
  266. .addField('Channel Name :' , `${song.best}`, true)
  267. .addField('Channel ID :' , `${song.zg}`, true)
  268. .addField('Video Created at :' , `${ idk.datePublished}`, true)
  269. .addField('Views :' , `${ idk.views}`, true)
  270. .addField('Like👍 :' , `${ idk.likeCount}`, true)
  271. .addField('dislike👎 :' , `${yyyy[msg.guild.id].dislike}`, true)
  272. .addField('comments :' , `${ idk.commentCount}`, true)
  273. .setImage(`${song.eyad}`)
  274. .setThumbnail('http://cdn.akhbaar24.com/430e061a-f89a-43c7-86d9-82fae5f7c495.jpg')
  275. .setColor('#ff0000')
  276. .setTimestamp()
  277. });
  278. })
  279. cn.on("collect", r => {
  280. love.edit({embed : new Discord.RichEmbed()
  281. .setTitle(`**${ idk.title}**`)
  282. .setURL( idk.url)
  283. .addField('Time The Video :' , `${song.time}`, true)
  284. .addField('Channel Name :' , `${song.best}`, true)
  285. .addField('Channel ID :' , `${song.zg}`, true)
  286. .addField('Video Created at :' , `${ idk.datePublished}`, true)
  287. .addField('Views :' , `${ idk.views}`, true)
  288. .addField('Like👍 :' , `${ idk.likeCount}`, true)
  289. .addField('dislike👎 :' , `${ idk.dislikeCount}`, true)
  290. .addField('comments :' , `${ idk.commentCount}`, true)
  291. .setImage(`${song.eyad}`)
  292. .setThumbnail('http://cdn.akhbaar24.com/430e061a-f89a-43c7-86d9-82fae5f7c495.jpg')
  293. .setColor('#ff0000')
  294. .setTimestamp()
  295. });
  296. })
  297. })
  298. })
  299. })
  300. })
  301. })
  302. }
  303. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement