Facebook
From 'Łynx, 3 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 129
  1. const YouTube = require('simple-youtube-api');
  2. const ytdl = require('ytdl-core');
  3. const youtube = new YouTube('AIzaSyBNv7r7njLNxLGTEglWVKent2hc_RkEMR0');
  4. const queue = new Map();
  5.  
  6. client.on('message', async msg => {
  7.  
  8.         if (msg.author.bot) return undefined;
  9.  
  10.         const args = msg.content.split(' ');
  11.         const searchString = args.slice(1).join(' ');
  12.         const url = args[1] ? args[1].replace(/<(.+)>/g, '$1') : '';
  13.         const serverQueue = queue.get(msg.guild.id);
  14.         let command = msg.content.toLowerCase().split(' ')[0];
  15.  
  16.         if (command === 'c+çal') {
  17.                 const voiceChannel = msg.member.voiceChannel;
  18.                 if (!voiceChannel) return msg.channel.sendEmbed(new Discord.RichEmbed()
  19.       .setColor('RANDOM')
  20.     .setDescription('❎ | Lütfen Seli Bir Kanala Giriş Yapınız!'));
  21.                 const permissions = voiceChannel.permissionsFor(msg.client.user);
  22.                 if (!permissions.has('CONNECT')) {
  23.                         return msg.channel.sendEmbed(new Discord.RichEmbed()
  24.     .setColor('RANDOM')
  25.     .setTitle('❎ | Lütfen Seli Bir Kanala Giriş Yapınız!'));
  26.                 }
  27.                 if (!permissions.has('SPEAK')) {
  28.                          return msg.channel.sendEmbed(new Discord.RichEmbed()
  29.       .setColor('RANDOM')
  30.       .setTitle('❎ | Şarkıyı Çalamıyorum Bu Kanalda Konuşma Yetkim Yok!'));
  31.         }
  32.  
  33.                 if (url.match(/^https?://(www.youtube.com|youtube.com)/playlist(.*)$/)) {
  34.                         const playlist = await youtube.getPlaylist(url);
  35.                         const videos = await playlist.getVideos();
  36.                         for (const video of Object.values(videos)) {
  37.                                 const video2 = await youtube.getVideoByID(video.id); // eslint-disable-line no-await-in-loop
  38.                                 await handleVideo(video2, msg, voiceChannel, true); // eslint-disable-line no-await-in-loop
  39.                         }
  40.                          return msg.channel.sendEmbed(new Discord.RichEmbed)
  41.       .setTitle(`✅** | **${playlist.title}** Adlı Şarkı Kuyruğa Eklendi!**`)
  42.                 } else {
  43.                         try {
  44.                                 var video = await youtube.getVideo(url);
  45.                         } catch (error) {
  46.                                 try {
  47.                                         var videos = await youtube.searchVideos(searchString, 10);
  48.                                         let index = 0;
  49.          
  50.                                  msg.channel.sendEmbed(new Discord.RichEmbed()                  
  51.          .setTitle('Şarkı Seçimi')
  52.          .setDescription(`${videos.map(video2 => `**${++index} -** ${video2.title}`).join('n')}`)
  53.          .setFooter('Lütfen 1-10 Arasında Bir Rakam Seçiniz 10 Saniye İçinde Liste İptal Edilecektir!')
  54.          .setFooter('Örnek Kullanım 1')
  55.          .setColor('0x36393E'));
  56.           msg.delete(5000)
  57.                                         try {
  58.                                                 var response = await msg.channel.awaitMessages(msg2 => msg2.content > 0 && msg2.content < 11, {
  59.                                                         maxMatches: 1,
  60.                                                         time: 10000,
  61.                                                         errors: ['time']
  62.                                                 });
  63.                                         } catch (err) {
  64.                                                 console.error(err);
  65.                                                  return msg.channel.sendEmbed(new Discord.RichEmbed()
  66.             .setColor('0x36393E')
  67.             .setDescription('❎ | **10 Saniye İçinde Şarkı Seçmediğiniz İçin seçim İptal Edilmiştir!**.'));
  68.                     }
  69.                                         const videoIndex = parseInt(response.first().content);
  70.                                         var video = await youtube.getVideoByID(videos[videoIndex - 1].id);
  71.                                 } catch (err) {
  72.                                         console.error(err);
  73.                                         return msg.channel.sendEmbed(new Discord.RichEmbed()
  74.           .setColor('0x36393E')
  75.           .setDescription('❎ | YouTubede Böyle Bir Şarkı Yok !**'));
  76.                 }
  77.             }
  78.                         return handleVideo(video, msg, voiceChannel);
  79.      
  80.                 }
  81.         } else if (command === 'c+gir') {
  82.                 return new Promise((resolve, reject) => {
  83.                         const voiceChannel = msg.member.voiceChannel;
  84.                         if (!voiceChannel || voiceChannel.type !== 'voice') return msg.reply('Kanalda Kimse Olmadığından Çıkıyorum!');
  85.                         voiceChannel.join().then(connection => resolve(connection)).catch(err => reject(err));
  86.                 });
  87.         } else if (command === 'c+geç') {
  88.                 if (!msg.member.voiceChannel) if (!msg.member.voiceChannel) return msg.channel.sendEmbed(new Discord.RichEmbed()
  89.     .setColor('RANDOM')
  90.     .setDescription('❎ | Lütfen Seli Bir Kanala Giriş Yapınız!'));
  91.                 if (!serverQueue) return msg.channel.sendEmbed(new Discord.RichEmbed()
  92.      .setColor('RANDOM')
  93.      .setTitle('❎ **Şu An Zaten Şarkı Çalmıyorum!'));                                              
  94.                 serverQueue.connection.dispatcher.end('**Sıradaki Şarkıya Geçildi!**');
  95.                 return undefined;
  96.         } else if (command === 'c+durdur') {
  97.                 if (!msg.member.voiceChannel) if (!msg.member.voiceChannel) return msg.channel.sendEmbed(new Discord.RichEmbed()
  98.     .setColor('RANDOM')
  99.     .setDescription('❎ | Lütfen Seli Bir Kanala Giriş Yapınız!'));
  100.                 if (!serverQueue) return msg.channel.sendEmbed(new Discord.RichEmbed()
  101.      .setColor('RANDOM')
  102.      .setTitle('❎ | Şu An Zaten Şarkı Çalmıyorum!'));                                              
  103.                 msg.channel.send(`:stop_button: **${serverQueue.songs[0].title}** Adlı Şarkı Durduruldu`);
  104.                 serverQueue.songs = [];
  105.                 serverQueue.connection.dispatcher.end('**Şarkı Bitti**');
  106.                 return undefined;
  107.         } else if (command === 'c+ses') {
  108.                 if (!msg.member.voiceChannel) if (!msg.member.voiceChannel) return msg.channel.sendEmbed(new Discord.RichEmbed()
  109.     .setColor('RANDOM')
  110.     .setDescription('❎ | Lütfen Seli Bir Kanala Giriş Yapınız!'));
  111.                 if (!serverQueue) return msg.channel.sendEmbed(new Discord.RichEmbed()
  112.      .setColor('RANDOM')
  113.      .setTitle('❎ | Çalmayan Müziğin Sesine Bakamam'));                                              
  114.                 if (!args[1]) return msg.channel.sendEmbed(new Discord.RichEmbed()
  115.    .setTitle(`:loud_sound: Şuanki Ses Seviyesi: **${serverQueue.volume}**`)
  116.     .setColor('RANDOM'))
  117.                 serverQueue.volume = args[1];
  118.                 serverQueue.connection.dispatcher.setVolumeLogarithmic(args[1] / 5);
  119.                 return msg.channel.sendEmbed(new Discord.RichEmbed()
  120.     .setTitle(`:loud_sound: Ses Seviyesi Ayarlanıyor: **${args[1]}**`)
  121.     .setColor('RANDOM'));                            
  122.         } else if (command === 'c+çalan') {
  123.                 if (!serverQueue) return msg.channel.sendEmbed(new Discord.RichEmbed()
  124.     .setTitle("❎ | Şu An Şarkı Çalınmıyor!")
  125.     .setColor('RANDOM'));
  126.                 return msg.channel.sendEmbed(new Discord.RichEmbed()
  127.     .setColor('RANDOM')
  128.     .setTitle("Çalan")                            
  129.     .addField('Başlık', `[${serverQueue.songs[0].title}](${serverQueue.songs[0].url})`, true)
  130.     .addField("Süre", `${serverQueue.songs[0].durationm}:${serverQueue.songs[0].durations}`, true))
  131.         } else if (command === 'c+sıra') {
  132.     let index = 0;
  133.                 if (!serverQueue) return msg.channel.sendEmbed(new Discord.RichEmbed()
  134.     .setTitle("❎ | **Şarkı Kuyruğunda Şarkı Bulunmamakta**")
  135.     .setColor('RANDOM'));
  136.                   return msg.channel.sendEmbed(new Discord.RichEmbed()
  137.     .setColor('RANDOM')
  138.      .setTitle('Şarkı Kuyruğu')
  139.     .setDescription(`${serverQueue.songs.map(song => `**${++index} -** ${song.title}`).join('n')}`))
  140.     .addField('Şu Anda Çalınan: ' + `${serverQueue.songs[0].title}`);
  141.         } else if (command === 'c+duraklat') {
  142.                 if (serverQueue && serverQueue.playing) {
  143.                         serverQueue.playing = false;
  144.                         serverQueue.connection.dispatcher.pause();
  145.                         return msg.channel.sendEmbed(new Discord.RichEmbed()
  146.       .setTitle("**:pause_button: Şarkı Durduruldu!**")
  147.       .setColor('RANDOM'));
  148.                 }
  149.                 return msg.channel.send('❎ | **Şarkı Çalmıyor Şu An**');
  150.         } else if (command === 'c+devam') {
  151.                 if (serverQueue && !serverQueue.playing) {
  152.                         serverQueue.playing = true;
  153.                         serverQueue.connection.dispatcher.resume();
  154.                         return msg.channel.sendEmbed(new Discord.RichEmbed()
  155.       .setTitle("**:arrow_forward: Şarkı Devam Ediyor!**")
  156.       .setColor('RANDOM'));
  157.                 }
  158.                 return msg.channel.sendEmbed(new Discord.RichEmbed()
  159.     .setTitle("**❎ | Şu An Şarkı Çalınmıyor!**")
  160.     .setColor('RANDOM'));
  161.         }
  162.  
  163.  
  164.         return undefined;
  165. });
  166.  
  167. async function handleVideo(video, msg, voiceChannel, playlist = false) {
  168.     const serverQueue = queue.get(msg.guild.id);
  169.     console.log(video);
  170.     const song = {
  171.         id: video.id,
  172.         title: video.title,
  173.         url: `https://www.youtube.com/watch?v=${video.id}`,
  174.     durationh: video.duration.hours,
  175.     durationm: video.duration.minutes,
  176.         durations: video.duration.seconds,
  177.     views: video.views,
  178.     };
  179.         if (!serverQueue) {
  180.                 const queueConstruct = {
  181.                         textChannel: msg.channel,
  182.                         voiceChannel: voiceChannel,
  183.                         connection: null,
  184.                         songs: [],
  185.                         volume: 5,
  186.                         playing: true
  187.                 };
  188.                 queue.set(msg.guild.id, queueConstruct);
  189.  
  190.                 queueConstruct.songs.push(song);
  191.  
  192.                 try {
  193.                         var connection = await voiceChannel.join();
  194.                         queueConstruct.connection = connection;
  195.                         play(msg.guild, queueConstruct.songs[0]);
  196.                 } catch (error) {
  197.                         console.error(`❎ | **Şarkı Sisteminde Problem Var Hata Nedeni: ${error}**`);
  198.                         queue.delete(msg.guild.id);
  199.                         return msg.channel.sendEmbed(new Discord.RichEmbed()
  200.       .setTitle(`❎ | **Şarkı Sisteminde Problem Var Hata Nedeni: ${error}**`)
  201.       .setColor('RANDOM'))
  202.                 }
  203.         } else {
  204.                 serverQueue.songs.push(song);
  205.                 console.log(serverQueue.songs);
  206.                 if (playlist) return undefined;
  207.                 return msg.channel.sendEmbed(new Discord.RichEmbed()
  208.     .setTitle(`✅ | **${song.title}** Adlı Şarkı Kuyruğa Eklendi!`)
  209.     .setColor('RANDOM'))
  210.         }
  211.         return undefined;
  212. }
  213.  
  214. function play(guild, song) {
  215.         const serverQueue = queue.get(guild.id);
  216.  
  217.         if (!song) {
  218.                 serverQueue.voiceChannel.leave();
  219.                 queue.delete(guild.id);
  220.                 return;
  221.         }
  222.         console.log(serverQueue.songs);
  223.  
  224.         const dispatcher = serverQueue.connection.playStream(ytdl(song.url))
  225.                 .on('end', reason => {
  226.                         if (reason === '❎ | **Yayın Akış Hızı Yeterli Değil.**') console.log('Şarkı Bitti.');
  227.                         else console.log(reason);
  228.                         serverQueue.songs.shift();
  229.                         play(guild, serverQueue.songs[0]);
  230.                 })
  231.                 .on('error', error => console.error(error));
  232.         dispatcher.setVolumeLogarithmic(serverQueue.volume / 5);
  233.  
  234.          serverQueue.textChannel.sendEmbed(new Discord.RichEmbed()                                  
  235.   .setTitle("**? Şarkı Başladı**",`https://i.hizliresim.com/RDm4EZ.png`)
  236.   .setThumbnail(`https://i.ytimg.com/vi/${song.id}/default.jpg?width=80&height=60`)
  237.   .addField('nBaşlık', `[${song.title}](${song.url})`, true)
  238.   .addField("nSes Seviyesi", `${serverQueue.volume}%`, true)
  239.   .addField("Süre", `${song.durationm}:${song.durations}`, true)
  240.   .setColor('RANDOM'));
  241. }