"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.memberIsModThrow = exports.memberIsMod = exports.getChannel = exports.getMember = exports.emsg = exports.errorMessage = exports.shuffle = void 0; const discord_js_1 = require("discord.js"); /** * shuffles an array * https://stackoverflow.com/a/2450976/2856416 * @param array an array * @returns an array but shuffled */ function shuffle(array) { let currentIndex = array.length, randomIndex; // While there remain elements to shuffle... while (currentIndex != 0) { // Pick a remaining element... randomIndex = Math.floor(Math.random() * currentIndex); currentIndex--; // And swap it with the current element. [array[currentIndex], array[randomIndex]] = [ array[randomIndex], array[currentIndex] ]; } return array; } exports.shuffle = shuffle; class errorMessage { constructor(msg, ephemeral = true) { this.msg = msg; this.ephemeral = ephemeral; } } exports.errorMessage = errorMessage; /** * a simple class to contain an error message and related data * @param msg error message * @param ephemeral (default=true) * @returns new errorMessage */ const emsg = (msg, ephemeral = true) => new errorMessage(msg, ephemeral); exports.emsg = emsg; /** * get the GuildMember of an interaction * @param interaction * @throws errorMessage class if it cannot be read * @returns member */ function getMember(interaction) { let member = interaction.member; if (!(member instanceof discord_js_1.GuildMember)) throw (0, exports.emsg)('Unable to retrieve guild member information, please try again'); return member; } exports.getMember = getMember; /** * get the TextChannel of an interaction * @param interaction * @throws errorMessage class if it cannot be read * @returns member */ function getChannel(interaction) { let channel = interaction.channel; if (!(channel instanceof discord_js_1.TextChannel)) throw (0, exports.emsg)('Unable to retrieve text channel information, please try again'); return channel; } exports.getChannel = getChannel; function memberIsMod(interaction) { let member = getMember(interaction); return member.permissionsIn(interaction.channelId).has('MANAGE_MESSAGES'); } exports.memberIsMod = memberIsMod; function memberIsModThrow(interaction) { if (!memberIsMod(interaction)) throw (0, exports.emsg)('Member is not a moderator'); } exports.memberIsModThrow = memberIsModThrow;