skylex
Version:
Botlarınızda Rahatlıkla Kullanabileceğiniz Bir Modüldür.
115 lines (108 loc) • 4.15 kB
JavaScript
const { EventEmitter } = require('events');
const DisTube = require('distube');
const { Database } = require("quickmongo");
const { MessageButton, MessageActionRow } = require('discord-buttons');
const { MessageEmbed } = require('discord.js');
class Music extends EventEmitter {
constructor(client, url = '') {
super();
if (!client) throw new Error("A client wasn't provided.");
if (!url) throw new Error("A mongo URL wasn't provided.");
this.client = client;
this.db = new Database(url);
this.distube = new DisTube(client, {
searchSongs: false,
emitNewSongOnly: true
});
}
async kur(message) {
if (!message) throw new Error("A message handler wasn't provided.");
message.delete();
var stop = new MessageButton()
.setStyle("red")
.setLabel("Durdur")
.setID("stop");
var pause = new MessageButton()
.setStyle("blurple")
.setLabel("Duraklat")
.setID("pause");
var resume = new MessageButton()
.setStyle("green")
.setLabel("Devam Et")
.setID("resume");
var skip = new MessageButton()
.setStyle("grey")
.setLabel("Atla")
.setID("skip");
var queue = new MessageButton()
.setStyle("blurple")
.setLabel("Sıra")
.setID("queue");
var Row = new MessageActionRow()
.addComponent(stop)
.addComponent(pause)
.addComponent(resume)
.addComponent(skip)
.addComponent(queue);
var Embed = new MessageEmbed()
.setColor('BLURPLE')
.setTitle("Hiçbir şey oynamıyor!")
.setImage("https://media.discordapp.net/attachments/864172498722226227/865621684883030046/20210523_174346.jpg?width=427&height=427");
this.msg = await message.channel.send(Embed, Row);
this.db.set(`${message.guild.id}`, `${this.msg.id}`);
}
async oynat(message, music) {
if (!message) throw new Error("A message handler wasn't provided.");
if (!music) throw new Error("A music name handler wasn't provided.");
this.events(message);
this.distube.play(message, music);
message.delete();
}
async events(message) {
if (!message) throw new Error("A message handler wasn't provided.");
var msgId = await this.db.get(`${message.guild.id}`)
var msg = await message.channel.messages.fetch(msgId)
this.distube.on("playSong", (message, queue, song) => {
var Embed = new MessageEmbed()
.setColor('BLURPLE')
.setTitle(`Şu an oynatılıyor: **${song.name}**`)
.setImage(song.thumbnail);
msg.edit({ embed: Embed });
});
this.distube.on("finish", (message, que, song) =>{
var Embed = new MessageEmbed()
.setColor('BLURPLE')
.setTitle("Hiçbir şey oynamıyor!")
.setImage("https://media.discordapp.net/attachments/864172498722226227/865621684883030046/20210523_174346.jpg?width=427&height=427");
msg.edit({ embed: Embed });
});
}
async buton(button) {
if (!button) throw new Error("A button handler wasn't provided.");
button.reply.defer();
var embed = new MessageEmbed()
.setColor('BLURPLE')
.setTitle("Hiçbir şey oynamıyor!")
.setImage("https://media.discordapp.net/attachments/864172498722226227/865621684883030046/20210523_174346.jpg?width=427&height=427");
var message = button.message;
if (button.id == 'stop') {
this.distube.stop(message)
button.message.edit(embed)
button.message.channel.send('Sıradaki Müzik Durduruldu!')
} else if (button.id == 'pause') {
this.distube.pause(message)
button.message.channel.send('Sıradaki Müzik Duraklatıldı!')
} else if (button.id == 'resume') {
this.distube.resume(message)
button.message.channel.send('Sıradaki Müziğe Devam Edildi!')
} else if (button.id == 'queue') {
var queue = this.distube.getQueue(message);
var curqueue = queue.songs.map((song, id) => `**${id + 1}**. ${song.name} - \`${song.formattedDuration}\``).join("\n");
button.message.channel.send(curqueue)
} else if (button.id == 'skip') {
this.distube.skip(message)
button.message.channel.send('Sıradaki Müzik Atlandı!')
}
}
}
module.exports = Music;