Isse Kun
Emektar Üye
Merhaba arkadaşlar genel olarak bulamadığınız müzik komutunu sizlere ile paylaşmayı düşündüm.Sizlere vereceğim komutu "bot.js - server.js" artık ne olarak adlandırılmış ise içine ekliyoruz.
Ve YouTube API KEY alıp kodda belirtilen yere eklemeniz gerekmektedir.
Gerekli Modül
npm i ytdl-core
simple-youtube-api
Molly Malone's sotumuzu sunucularınıza eklemek için
Botumuzun destek sunucusuna gelmek ve yardım almak için
Ve YouTube API KEY alıp kodda belirtilen yere eklemeniz gerekmektedir.
Gerekli Modül
npm i ytdl-core
simple-youtube-api
Molly Malone's sotumuzu sunucularınıza eklemek için
Bağlantıları görmek için lütfen
Giriş Yap
Botumuzun destek sunucusuna gelmek ve yardım almak için
Bağlantıları görmek için lütfen
Giriş Yap
JavaScript:
const ytdl = require('ytdl-core');
const { GOOGLE_API_KEY } = require('./ayarlar.json');
const youtube = new YouTube(GOOGLE_API_KEY);
client.on('message', async msg => {
if (msg.author.bot) return undefined;
if (!msg.content.startsWith(prefix)) return undefined;
const args = msg.content.split(' ');
const searchString = args.slice(1).join(' ');
const url = args[1] ? args[1].replace(/<(.+)>/g, '$1') : '';
const serverQueue = queue.get(msg.guild.id);
let command = msg.content.toLowerCase().split(' ')[0];
command = command.slice(prefix.length)
if (command === 'play') {
const voiceChannel = msg.member.voiceChannel;
if (!voiceChannel) return msg.channel.sendEmbed(new Discord.RichEmbed()
.setColor('RANDOM')
.setDescription(':warning: | İlk olarak sesli bir kanala giriş yapmanız gerek.'));
const permissions = voiceChannel.permissionsFor(msg.client.user);
if (!permissions.has('CONNECT')) {
return msg.channel.sendEmbed(new Discord.RichEmbed()
.setColor('RANDOM')
.setTitle(':warning: | İlk olarak sesli bir kanala giriş yapmanız gerek.'));
}
if (!permissions.has('SPEAK')) {
return msg.channel.sendEmbed(new Discord.RichEmbed()
.setColor('RANDOM')
.setTitle(':warning: | Şarkı başlatılamıyor. Lütfen mikrofonumu açınız.'));
}
if (url.match(/^https?:\/\/(www.youtube.com|youtube.com)\/playlist(.*)$/)) {
const playlist = await youtube.getPlaylist(url);
const videos = await playlist.getVideos();
for (const video of Object.values(videos)) {
const video2 = await youtube.getVideoByID(video.id); // eslint-disable-line no-await-in-loop
await handleVideo(video2, msg, voiceChannel, true); // eslint-disable-line no-await-in-loop
}
return msg.channel.sendEmbed(new Discord.RichEmbed)
.setTitle(`**✅ | Oynatma Listesi: **${playlist.title}** Kuyruğa Eklendi!**`)
} else {
try {
var video = await youtube.getVideo(url);
} catch (error) {
try {
var videos = await youtube.searchVideos(searchString, 10);
let index = 0;
msg.channel.sendEmbed(new Discord.RichEmbed()
.setTitle('S-GÜVENLİK | Şarkı Seçimi')
.setAuthor(`${msg.author.tag}`, msg.author.avatarURL)
.setThumbnail("https://i.postimg.cc/W1b1LW13/youtube-kids-new-logo.png")
.setDescription(`${videos.map(video2 => `**${++index} -** ${video2.title}`).join('\n')}`)
.setFooter('Lütfen 1-10 arasında bir rakam seçiniz 10 saniye içinde liste iptal edilecektir.')
.setColor('RED'));
msg.delete(5000)
try {
var response = await msg.channel.awaitMessages(msg2 => msg2.content > 0 && msg2.content < 11, {
maxMatches: 1,
time: 10000,
errors: ['time']
});
} catch (err) {
console.error(err);
return msg.channel.sendEmbed(new Discord.RichEmbed()
.setColor('RED')
.setDescription(':warning: | **Şarkı Değeri Belirtmediğiniz İçin Seçim İptal Edilmiştir**.'));
}
const videoIndex = parseInt(response.first().content);
var video = await youtube.getVideoByID(videos[videoIndex - 1].id);
} catch (err) {
console.error(err);
return msg.channel.sendEmbed(new Discord.RichEmbed()
.setColor('RED')
.setDescription(':( | **Aradım Fakat Hiç Bir Sonuç Çıkmadı**'));
}
}
return handleVideo(video, msg, voiceChannel);
}
} else if (command === 'skip') {
if (!msg.member.voiceChannel) if (!msg.member.voiceChannel) return msg.channel.sendEmbed(new Discord.RichEmbed()
.setColor('RANDOM')
.setDescription('<a:frograinbow:488978511474982933> | **Lütfen öncelikle sesli bir kanala katılınız**.'));
if (!serverQueue) return msg.channel.sendEmbed(new Discord.RichEmbed()
.setColor('RANDOM')
.setTitle('<a:frograinbow:488978511474982933> | **Hiç Bir Müzik Çalmamakta**'));
serverQueue.connection.dispatcher.end('**Müziği Geçtim!**');
return undefined;
} else if (command === 'stop') {
if (!msg.member.voiceChannel) if (!msg.member.voiceChannel) return msg.channel.sendEmbed(new Discord.RichEmbed()
.setColor('RANDOM')
.setDescription('**:warning: | Lütfen öncelikle sesli bir kanala katılınız.**'));
if (!serverQueue) return msg.channel.sendEmbed(new Discord.RichEmbed()
.setColor('RANDOM')
.setTitle(':warning: **| Hiç Bir Müzik Çalmamakta**'));
msg.channel.send(`:stop_button: **${serverQueue.songs[0].title}** Adlı Müzik Durduruldu`);
serverQueue.songs = [];
serverQueue.connection.dispatcher.end('**Müzik Bitti**');
return undefined;
} else if (command === 'volume') {
if (!msg.member.voiceChannel) if (!msg.member.voiceChannel) return msg.channel.sendEmbed(new Discord.RichEmbed()
.setColor('RANDOM')
.setDescription(':warning: **| Lütfen öncelikle sesli bir kanala katılınız.**'));
if (!serverQueue) return msg.channel.sendEmbed(new Discord.RichEmbed()
.setColor('RANDOM')
.setTitle(':warning:| **Hiç Bir Müzik Çalmamakta**'));
if (!args[1]) return msg.channel.sendEmbed(new Discord.RichEmbed()
.setTitle(`:warning: Şuanki Ses Seviyesi: **${serverQueue.volume}**`)
.setColor('RANDOM'))
serverQueue.volume = args[1];
serverQueue.connection.dispatcher.setVolumeLogarithmic(args[1] / 5);
return msg.channel.sendEmbed(new Discord.RichEmbed()
.setTitle(`:hammer: Ses Seviyesi Ayarlanıyor: **${args[1]}**`)
.setColor('RANDOM'));
} else if (command === 'np') {
if (!serverQueue) return msg.channel.sendEmbed(new Discord.RichEmbed()
.setTitle(":warning: | **Çalan Müzik Bulunmamakta**")
.setColor('RANDOM'));
return msg.channel.sendEmbed(new Discord.RichEmbed()
.setColor('RANDOM')
.setTitle("Molly Malone's | Çalan Şarkı")
.addField('Başlık', `[${serverQueue.songs[0].title}](${serverQueue.songs[0].url})`, true)
.addField("Süre", `${serverQueue.songs[0].durationm}:${serverQueue.songs[0].durations}`, true))
} else if (command === 'queue') {
let index = 0;
if (!serverQueue) return msg.channel.sendEmbed(new Discord.RichEmbed()
.setTitle(":warning: | **Sırada Müzik Bulunmamakta**")
.setColor('RANDOM'));
return msg.channel.sendEmbed(new Discord.RichEmbed()
.setColor('RANDOM')
.setTitle("Molly Malone's | Şarkı Kuyruğu")
.setDescription(`${serverQueue.songs.map(song => `**${++index} -** ${song.title}`).join('\n')}`))
.addField('Şu anda çalınan: ' + `${serverQueue.songs[0].title}`);
} else if (command === 'pause') {
if (serverQueue && serverQueue.playing) {
serverQueue.playing = false;
serverQueue.connection.dispatcher.pause();
return msg.channel.sendEmbed(new Discord.RichEmbed()
.setTitle("**:pause_button: Müzik Senin İçin Durduruldu!**")
.setColor('RANDOM'));
}
return msg.channel.send(':warning: | **Çalan Müzik Bulunmamakta**');
} else if (command === 'unpause') {
if (serverQueue && !serverQueue.playing) {
serverQueue.playing = true;
serverQueue.connection.dispatcher.resume();
return msg.channel.sendEmbed(new Discord.RichEmbed()
.setTitle("**:arrow_forward: Müzik Senin İçin Devam Etmekte!**")
.setColor('RANDOM'));
}
return msg.channel.sendEmbed(new Discord.RichEmbed()
.setTitle(":warning: ** | Çalan Müzik Bulunmamakta.**")
.setColor('RANDOM'));
}
return undefined;
});
async function handleVideo(video, msg, voiceChannel, playlist = false) {
const serverQueue = queue.get(msg.guild.id);
console.log(video);
const song = {
id: video.id,
title: video.title,
url: `https://www.youtube.com/watch?v=${video.id}`,
durationh: video.duration.hours,
durationm: video.duration.minutes,
durations: video.duration.seconds,
views: video.views,
};
if (!serverQueue) {
const queueConstruct = {
textChannel: msg.channel,
voiceChannel: voiceChannel,
connection: null,
songs: [],
volume: 5,
playing: true
};
queue.set(msg.guild.id, queueConstruct);
queueConstruct.songs.push(song);
try {
var connection = await voiceChannel.join();
queueConstruct.connection = connection;
play(msg.guild, queueConstruct.songs[0]);
} catch (error) {
console.error(`:warning: **Şarkı Sisteminde Problem Var Hata Nedeni: ${error}**`);
queue.delete(msg.guild.id);
return msg.channel.sendEmbed(new Discord.RichEmbed()
.setTitle(`:warning: **Şarkı Sisteminde Problem Var Hata Nedeni: ${error}**`)
.setColor('RANDOM'))
}
} else {
serverQueue.songs.push(song);
console.log(serverQueue.songs);
if (playlist) return undefined;
return msg.channel.sendEmbed(new Discord.RichEmbed()
.setTitle(`:arrow_heading_up: **${song.title}** Adlı Müzik Kuyruğa Eklendi!`)
.setColor('RANDOM'))
}
return undefined;
}
function play(guild, song) {
const serverQueue = queue.get(guild.id);
if (!song) {
serverQueue.voiceChannel.leave();
queue.delete(guild.id);
return;
}
console.log(serverQueue.songs);
const dispatcher = serverQueue.connection.playStream(ytdl(song.url))
.on('end', reason => {
if (reason === ' :x: | **Yayın Akış Hızı Yeterli Değil.**') console.log('Müzik Bitti.');
else console.log(reason);
serverQueue.songs.shift();
play(guild, serverQueue.songs[0]);
})
.on('error', error => console.error(error));
dispatcher.setVolumeLogarithmic(serverQueue.volume / 5);
serverQueue.textChannel.sendEmbed(new Discord.RichEmbed()
.setTitle("**Molly Malone's | Müzik Başladı**",`https://cdn.discordapp.com/avatars/473974675194511361/6bb90de9efe9fb80081b185266bb94a6.png?size=2048`)
.addField('\nBaşlık', `[${song.title}](${song.url})`, true)
.addField("\nSes Seviyesi", `${serverQueue.volume}%`, true)
.addField("Süre", `${song.durationm}:${song.durations}`, true)
.setImage(`https://i.ytimg.com/vi/${song.id}/default.jpg?width=80&height=60`)
.setColor('RANDOM'));
}