Pronto logo

Pronto

source

handlers/permissionsHandler.js

View on GitHub

'use strict';

// eslint-disable-next-line no-unused-vars
const Discord = require('discord.js');
// eslint-disable-next-line no-unused-vars
const Typings = require('../typings');

const { getRoleError, permissionsCheck } = require('../handlers');

/** */

/**
 *
 * @function handlers.permissionsHandler
 * @param {Discord.Message} msg The command message
 * @param {Typings.BaseCommand} command The \<BaseCommand> object to check permissions against
 * @returns {Promise<boolean | 'ERROR'>} If user has permissions or `ERROR`
 */
module.exports = async (msg, command) => {
	const { bot } = require('../pronto');

	const server = bot.guilds.cache.find(guild => guild.members.cache.has(msg.author.id));

	const member = (msg.guild)
		? msg.member
		: await server.members.fetch(msg.author.id);

	const memberRoles = member.roles.cache;

	return (memberRoles)
		? permissionsCheck(memberRoles, msg.author.id, command)
		: await getRoleError(msg);
};