From 85d0e833dd6304fd2bf0e8fe82161cbb72e8c6e2 Mon Sep 17 00:00:00 2001 From: ashley zomo Date: Mon, 31 Jan 2022 17:06:34 -0600 Subject: [PATCH] cleaned up queue code --- dist/queue.js | 20 ++++++++++++++++---- src/queue.ts | 23 ++++++++++++++++++++--- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/dist/queue.js b/dist/queue.js index a183b01..284f73b 100644 --- a/dist/queue.js +++ b/dist/queue.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.queueInfo = exports.readyQueue = exports.leaveQueue = exports.joinQueue = exports.createQueue = void 0; +exports.queueInfo = exports.readyQueue = exports.leaveQueue = exports.joinQueue = exports.createQueue = exports.queueContains = void 0; const discord_js_1 = require("discord.js"); const util_1 = require("./util"); //maps ChannelID to QueueInfo @@ -29,6 +29,18 @@ function getInfo(interaction) { throw 'There is not an active queue in this channel, type `/queue` to create one'; return info; } +/** + * checks if the interaction data is already in the queue + * @param interaction + * @returns boolean + */ +function queueContains(interaction) { + let member = getMember(interaction), info = getInfo(interaction); + if (info.players.map(m => m.id).includes(member.id)) + return true; + return false; +} +exports.queueContains = queueContains; /** * creates a queue from an interaction * @param interaction @@ -37,7 +49,7 @@ function getInfo(interaction) { async function createQueue(interaction) { let { channelId } = interaction, member = getMember(interaction), teamsize = interaction.options.getInteger('teamsize', true); if (QUEUE.has(channelId)) - throw 'There is already an active queue in this channel, type `/join` to join'; //and you are already in it + throw 'There is already an active queue in this channel, ' + (queueContains(interaction) ? 'and you are already in it' : 'type `/join` to join'); //and you are already in it QUEUE.set(channelId, { players: [ member @@ -55,7 +67,7 @@ exports.createQueue = createQueue; */ async function joinQueue(interaction) { let member = getMember(interaction), info = getInfo(interaction); - if (info.players.map(m => m.id).includes(member.id)) + if (queueContains(interaction)) throw 'You are already in the active queue'; info.players.push(member); QUEUE.set(interaction.channelId, info); @@ -69,7 +81,7 @@ exports.joinQueue = joinQueue; */ async function leaveQueue(interaction) { let member = getMember(interaction), info = getInfo(interaction); - if (!info.players.map(m => m.id).includes(member.id)) + if (!queueContains(interaction)) throw 'You aren\'t in the active queue'; info.players.splice(info.players.indexOf(member), 1); QUEUE.set(interaction.channelId, info); diff --git a/src/queue.ts b/src/queue.ts index 05d8c63..c9a7a86 100644 --- a/src/queue.ts +++ b/src/queue.ts @@ -41,6 +41,23 @@ function getInfo(interaction: CommandInteraction): queueInfo { return info; } +/** + * checks if the interaction data is already in the queue + * @param interaction + * @returns boolean + */ +export function queueContains(interaction: CommandInteraction): boolean { + + let member = getMember(interaction), + info = getInfo(interaction); + + if (info.players.map(m=>m.id).includes(member.id)) + return true; + + return false; + +} + /** * creates a queue from an interaction * @param interaction @@ -53,7 +70,7 @@ export async function createQueue(interaction: CommandInteraction) { teamsize = interaction.options.getInteger('teamsize', true); if (QUEUE.has(channelId)) - throw 'There is already an active queue in this channel, type `/join` to join'; //and you are already in it + throw 'There is already an active queue in this channel, ' + (queueContains(interaction) ? 'and you are already in it' : 'type `/join` to join'); //and you are already in it QUEUE.set(channelId, { players: [ @@ -77,7 +94,7 @@ export async function joinQueue(interaction: CommandInteraction) { let member = getMember(interaction), info = getInfo(interaction); - if (info.players.map(m=>m.id).includes(member.id)) + if (queueContains(interaction)) throw 'You are already in the active queue'; info.players.push(member); @@ -98,7 +115,7 @@ export async function leaveQueue(interaction: CommandInteraction) { let member = getMember(interaction), info = getInfo(interaction); - if (!info.players.map(m=>m.id).includes(member.id)) + if (!queueContains(interaction)) throw 'You aren\'t in the active queue'; info.players.splice(info.players.indexOf(member), 1);