WoLF_UsA

كود ميوزك

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