Skip to content

Commit

Permalink
Check if queue exists before doing other checks
Browse files Browse the repository at this point in the history
  • Loading branch information
eritislami committed Jun 13, 2020
1 parent 5d3b849 commit b488dce
Show file tree
Hide file tree
Showing 11 changed files with 50 additions and 54 deletions.
3 changes: 1 addition & 2 deletions commands/loop.js
Expand Up @@ -5,10 +5,9 @@ module.exports = {
aliases: ['l'],
description: "Toggle music loop",
execute(message) {
if (!canModifyQueue(message.member)) return;

const queue = message.client.queue.get(message.guild.id);
if (!queue) return message.reply("There is nothing playing.").catch(console.error);
if (!canModifyQueue(message.member)) return;

// toggle from false to true and reverse
queue.loop = !queue.loop;
Expand Down
6 changes: 3 additions & 3 deletions commands/nowplaying.js
Expand Up @@ -4,9 +4,9 @@ module.exports = {
name: "np",
description: "Show now playing song",
execute(message) {
const serverQueue = message.client.queue.get(message.guild.id);
if (!serverQueue) return message.reply("There is nothing playing.").catch(console.error);
const song = serverQueue.songs[0];
const queue = message.client.queue.get(message.guild.id);
if (!queue) return message.reply("There is nothing playing.").catch(console.error);
const song = queue.songs[0];

let nowPlaying = new MessageEmbed()
.setTitle("Now playing")
Expand Down
9 changes: 4 additions & 5 deletions commands/pause.js
Expand Up @@ -4,15 +4,14 @@ module.exports = {
name: "pause",
description: "Pause the currently playing music",
execute(message) {
if (!canModifyQueue(message.member)) return

const queue = message.client.queue.get(message.guild.id);
if (queue && queue.playing) {
if (!queue) return message.reply("There is nothing playing.").catch(console.error);
if (!canModifyQueue(message.member)) return;

if (queue.playing) {
queue.playing = false;
queue.connection.dispatcher.pause(true);
return queue.textChannel.send(`${message.author} ⏸ paused the music.`).catch(console.error);
}

return message.reply("There is nothing playing.").catch(console.error);
}
};
30 changes: 17 additions & 13 deletions commands/queue.js
Expand Up @@ -2,24 +2,28 @@ const { MessageEmbed, splitMessage } = require("discord.js");

module.exports = {
name: "queue",
aliases: ['q'],
aliases: ["q"],
description: "Show the music queue and now playing.",
execute(message) {
const serverQueue = message.client.queue.get(message.guild.id);
const queue = message.client.queue.get(message.guild.id);

if (!serverQueue) return message.reply("There is nothing playing.").catch(console.error);
const description = serverQueue.songs.map((song, index) => `${index + 1}. ${song.title}`);
if (!queue) return message.reply("There is nothing playing.").catch(console.error);
const description = queue.songs.map((song, index) => `${index + 1}. ${song.title}`);

let queueEmbed = new MessageEmbed()
.setTitle("EvoBot Music Queue")
.setDescription(serverQueue.songs.map((song, index) => `${index + 1}. ${song.title}`))
.setColor("#F8AA2A");

const splitDescription = splitMessage(description, { maxLength: 2048, char: '\n', prepend: '', append: '' });
splitDescription.forEach(async m => {
queueEmbed.setDescription(m);
message.channel.send(queueEmbed);
});
.setTitle("EvoBot Music Queue")
.setDescription(queue.songs.map((song, index) => `${index + 1}. ${song.title}`))
.setColor("#F8AA2A");

const splitDescription = splitMessage(description, {
maxLength: 2048,
char: "\n",
prepend: "",
append: ""
});
splitDescription.forEach(async (m) => {
queueEmbed.setDescription(m);
message.channel.send(queueEmbed);
});
}
};
5 changes: 2 additions & 3 deletions commands/remove.js
Expand Up @@ -4,14 +4,13 @@ module.exports = {
name: "remove",
description: "Remove song from the queue",
execute(message, args) {
const queue = message.client.queue.get(message.guild.id);
if (!queue) return message.channel.send("There is no queue.").catch(console.error);
if (!canModifyQueue(message.member)) return;

if (!args.length) return message.reply(`Usage: ${message.client.prefix}remove <Queue Number>`);
if (isNaN(args[0])) return message.reply(`Usage: ${message.client.prefix}remove <Queue Number>`);

const queue = message.client.queue.get(message.guild.id);
if (!queue) return message.channel.send("There is no queue.").catch(console.error);

const song = queue.songs.splice(args[0] - 1, 1);
queue.textChannel.send(`${message.author} ❌ removed **${song[0].title}** from the queue.`);
}
Expand Down
9 changes: 4 additions & 5 deletions commands/resume.js
Expand Up @@ -2,18 +2,17 @@ const { canModifyQueue } = require("../util/EvobotUtil");

module.exports = {
name: "resume",
aliases: ['r'],
aliases: ["r"],
description: "Resume currently playing music",
execute(message) {
if (!canModifyQueue(message.member)) return;

const queue = message.client.queue.get(message.guild.id);
if (!queue) return message.reply("There is nothing playing.").catch(console.error);
if (!canModifyQueue(message.member)) return;

if (queue && !queue.playing) {
if (!queue.playing) {
queue.playing = true;
queue.connection.dispatcher.resume();
return queue.textChannel.send(`${message.author} ▶ resumed the music!`).catch(console.error);
}
return message.reply("There is nothing playing.").catch(console.error);
}
};
9 changes: 3 additions & 6 deletions commands/shuffle.js
Expand Up @@ -4,16 +4,13 @@ module.exports = {
name: "shuffle",
description: "Shuffle queue",
execute(message) {
if (!canModifyQueue(message.member)) return;

const queue = message.client.queue.get(message.guild.id);

if (!queue)
return message.channel.send("Playlist is empty.").catch(console.error);
if (!queue) return message.channel.send("There is no queue.").catch(console.error);
if (!canModifyQueue(message.member)) return;

let songs = queue.songs;
for (let i = songs.length - 1; i > 1; i--) {
let j = 1 + Math.floor(Math.random() * (i));
let j = 1 + Math.floor(Math.random() * i);
[songs[i], songs[j]] = [songs[j], songs[i]];
}
queue.songs = songs;
Expand Down
7 changes: 3 additions & 4 deletions commands/skip.js
Expand Up @@ -2,14 +2,13 @@ const { canModifyQueue } = require("../util/EvobotUtil");

module.exports = {
name: "skip",
aliases: ['s'],
aliases: ["s"],
description: "Skip the currently playing song",
execute(message) {
if (!canModifyQueue(message.member)) return;

const queue = message.client.queue.get(message.guild.id);
if (!queue)
return message.channel.send("There is nothing playing that I could skip for you.").catch(console.error);
return message.reply("There is nothing playing that I could skip for you.").catch(console.error);
if (!canModifyQueue(message.member)) return;

queue.connection.dispatcher.end();
queue.textChannel.send(`${message.author} ⏭ skipped the song`).catch(console.error);
Expand Down
3 changes: 1 addition & 2 deletions commands/skipto.js
Expand Up @@ -5,12 +5,11 @@ module.exports = {
aliases: ["st"],
description: "Skip to the selected queue number",
execute(message, args) {
if (!canModifyQueue(message.member)) return;

if (!args.length) return message.reply(`Usage: ${message.client.prefix}${name} <Queue Number>`);

const queue = message.client.queue.get(message.guild.id);
if (!queue) return message.channel.send("There is no queue.").catch(console.error);
if (!canModifyQueue(message.member)) return;

queue.songs = queue.songs.slice(args[0] - 2);
queue.connection.dispatcher.end();
Expand Down
4 changes: 2 additions & 2 deletions commands/stop.js
Expand Up @@ -5,10 +5,10 @@ module.exports = {
name: "stop",
description: "Stops the music",
execute(message) {
if (!canModifyQueue(message.member)) return;

const queue = message.client.queue.get(message.guild.id);

if (!queue) return message.reply("There is nothing playing.").catch(console.error);
if (!canModifyQueue(message.member)) return;

queue.songs = [];
queue.connection.dispatcher.end();
Expand Down
19 changes: 10 additions & 9 deletions commands/volume.js
@@ -1,23 +1,24 @@
const { canModifyQueue } = require("../util/EvobotUtil");

module.exports = {
name: "volume",
aliases: ['v'],
aliases: ["v"],
description: "Change volume of currently playing music",
execute(message, args) {
const serverQueue = message.client.queue.get(message.guild.id);
const queue = message.client.queue.get(message.guild.id);

if (!message.member.voice.channel)
if (!queue) return message.reply("There is nothing playing.").catch(console.error);
if (!canModifyQueue(message.member))
return message.reply("You need to join a voice channel first!").catch(console.error);
if (!serverQueue) return message.reply("There is nothing playing.").catch(console.error);

if (!args[0])
return message.reply(`🔊 The current volume is: **${serverQueue.volume}%**`).catch(console.error);
if (!args[0]) return message.reply(`🔊 The current volume is: **${queue.volume}%**`).catch(console.error);
if (isNaN(args[0])) return message.reply("Please use a number to set volume.").catch(console.error);
if (parseInt(args[0]) > 100 || parseInt(args[0]) < 0)
return message.reply("Please use a number between 0 - 100.").catch(console.error);

serverQueue.volume = args[0];
serverQueue.connection.dispatcher.setVolumeLogarithmic(args[0] / 100);
queue.volume = args[0];
queue.connection.dispatcher.setVolumeLogarithmic(args[0] / 100);

return serverQueue.textChannel.send(`Volume set to: **${args[0]}%**`).catch(console.error);
return queue.textChannel.send(`Volume set to: **${args[0]}%**`).catch(console.error);
}
};

0 comments on commit b488dce

Please sign in to comment.