-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathqueue.js
95 lines (79 loc) · 3.28 KB
/
queue.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
const { MessageEmbed } = require("discord.js");
const sendError = require("../util/error");
module.exports = {
info: {
name: "queue",
description: "To show the server songs queue",
usage: "",
aliases: ["q", "list", "songlist", "song-list"],
},
run: async function (client, message, args) {
const permissions = message.channel.permissionsFor(message.client.user);
if (!permissions.has(["MANAGE_MESSAGES", "ADD_REACTIONS"]))
return sendError("Missing permission to manage messages or add reactions",message.channel);
const queue = message.client.queue.get(message.guild.id);
if (!queue) return sendError("There is nothing playing in this server.",message.channel)
let currentPage = 0;
const embeds = generateQueueEmbed(message, queue.songs);
const queueEmbed = await message.channel.send(
`**\`${currentPage + 1}\`**/**${embeds.length}**`,
embeds[currentPage]
);
try {
await queueEmbed.react("⬅️");
await queueEmbed.react("🛑");
await queueEmbed.react("➡️");
} catch (error) {
console.error(error);
message.channel.send(error.message).catch(console.error);
}
const filter = (reaction, user) =>
["⬅️", "🛑", "➡️"].includes(reaction.emoji.name) && message.author.id === user.id;
const collector = queueEmbed.createReactionCollector(filter, { time: 60000 });
collector.on("collect", async (reaction, user) => {
try {
if (reaction.emoji.name === "➡️") {
if (currentPage < embeds.length - 1) {
currentPage++;
queueEmbed.edit(`**\`${currentPage + 1}\`**/**${embeds.length}**`, embeds[currentPage]);
}
} else if (reaction.emoji.name === "⬅️") {
if (currentPage !== 0) {
--currentPage;
queueEmbed.edit(`**\`${currentPage + 1}\`**/**${embeds.length}**`, embeds[currentPage]);
}
} else {
collector.stop();
reaction.message.reactions.removeAll();
}
await reaction.users.remove(message.author.id);
} catch (error) {
console.error(error);
return message.channel.send(error.message).catch(console.error);
}
});
}
};
function generateQueueEmbed(message, queue) {
let embeds = [];
let k = 10;
for (let i = 0; i < queue.length; i += 10) {
const current = queue.slice(i, k);
let j = i;
k += 10;
const info = current.map((track) => `**\`${++j}\`** | [\`${track.title}\`](${track.url})`).join("\n");
const serverQueue =message.client.queue.get(message.guild.id);
const embed = new MessageEmbed()
.setAuthor("Server Songs Queue", "https://raw.githubusercontent.com/SudhanPlayz/Discord-MusicBot/master/assets/Music.gif")
.setThumbnail(message.guild.iconURL())
.setColor("BLUE")
.setDescription(`${info}`)
.addField("Now Playing", `[${queue[0].title}](${queue[0].url})`, true)
.addField("Text Channel", serverQueue.textChannel, true)
.addField("Voice Channel", serverQueue.voiceChannel, true)
.setFooter("Currently Server Volume is "+serverQueue.volume)
if(serverQueue.songs.length === 1)embed.setDescription(`No songs to play next add songs by \`\`${message.client.config.prefix}play <song_name>\`\``)
embeds.push(embed);
}
return embeds;
};