-
Notifications
You must be signed in to change notification settings - Fork 0
/
skip.js
75 lines (68 loc) · 3.41 KB
/
skip.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
const { ApplicationCommandOptionType, EmbedBuilder } = require('discord.js');
const {SlashCommandBuilder} = require("@discordjs/builders");
module.exports = {
data: new SlashCommandBuilder()
.setName("skip")
.setDescription("Switches the music being played.")
.addNumberOption(option =>
option
.setName("number")
.setDescription("Type how many songs you want to skip.")
.setRequired(false)),
async execute(interaction) {
let client = interaction.client;
let lang = require(`../../languages/en`);
try {
const queue = client.player.getQueue(interaction.guild.id);
if (!queue || !queue.playing) return interaction.reply({ content: lang.msg5, ephemeral: true }).catch(e => { })
let number = interaction.options.getNumber('number');
if (number) {
if (!queue.songs.length > number) return interaction.reply({ content: lang.msg82, ephemeral: true }).catch(e => { })
if (isNaN(number)) return interaction.reply({ content: lang.msg130, ephemeral: true }).catch(e => { })
if (1 > number) return interaction.reply({ content: lang.msg130, ephemeral: true }).catch(e => { })
try {
let old = queue.songs[0];
await client.player.jump(interaction, number).then(song => {
return interaction.reply({ content: `**${old.name}**, ${lang.msg83}` }).catch(e => { })
})
} catch(e){
return interaction.reply({ content: lang.msg63, ephemeral: true }).catch(e => { })
}
} else {
try {
let old = queue.songs[0];
const success = await queue.skip();
return interaction.reply({ content: success ? `**${old.name}**, ${lang.msg83}` : lang.msg41 }).catch(e => { })
} catch (e) {
return interaction.reply({ content: lang.msg63, ephemeral: true }).catch(e => { })
}
}
} catch (e) {
if (client.errorLog) {
let embed = new EmbedBuilder()
.setColor(client.config.embedColor)
.setTimestamp()
.addFields([
{ name: "Command", value: `${interaction?.commandName}` },
{ name: "Error", value: `${e.stack}` },
{ name: "User", value: `${interaction?.user?.tag} \`(${interaction?.user?.id})\``, inline: true },
{ name: "Guild", value: `${interaction?.guild?.name} \`(${interaction?.guild?.id})\``, inline: true },
{ name: "Time", value: `<t:${Math.floor(Date.now() / 1000)}:R>`, inline: true },
{ name: "Command Usage Channel", value: `${interaction?.channel?.name} \`(${interaction?.channel?.id})\``, inline: true },
{ name: "User Voice Channel", value: `${interaction?.member?.voice?.channel?.name} \`(${interaction?.member?.voice?.channel?.id})\``, inline: true },
])
await client.errorLog.send({ embeds: [embed] }).catch(e => { })
} else {
console.log(`
Command: ${interaction?.commandName}
Error: ${e}
User: ${interaction?.user?.tag} (${interaction?.user?.id})
Guild: ${interaction?.guild?.name} (${interaction?.guild?.id})
Command Usage Channel: ${interaction?.channel?.name} (${interaction?.channel?.id})
User Voice Channel: ${interaction?.member?.voice?.channel?.name} (${interaction?.member?.voice?.channel?.id})
`)
}
return interaction.reply({ content: `${lang.error7}\n\`${e}\``, ephemeral: true }).catch(e => { })
}
},
};