const { promisify } = require("util"); const { glob } = require("glob"); const PG = promisify(glob); const Ascii = require("ascii-table"); const { Perms } = require('../Validation/Permissions'); const { Client } = require("discord.js"); /** * @param {Client} client */ module.exports = async (client) => { const Table = new Ascii("Commands Loaded"); CommandsArray = []; (await PG(`${process.cwd()}/Commands/*/*.js`)).map(async (file) => { const command = require(file); if (!command.name) return Table.addRow(`${file.split("/")[7]}`, "🔸 FAILED" ,`missing a name.`); if (!command.description) return Table.addRow(command.name, "🔸 FAILED", "missing a description."); if (command.permission) { if(Perms.includes(command.permission)) command.defaultPermission = false; else return Table.addRow(command.name, "🔸 FAILED", `permission is invalid.`); } client.commands.set(command.name, command); CommandsArray.push(command); await Table.addRow(command.name, "🔹 SUCCESSFUL") ; }); console.log(Table.toString()); /// /// /// /// /// PERMISSIONS HANDLER /// /// /// /// /// client.on("ready", async () => { const MainGuilds = await client.guilds.cache.get("934743597868277831"); MainGuilds.commands.set(CommandsArray).then(async (command) => { const Roles = (commandName) => { const cmdPerms = CommandsArray.find((c) => c.name === commandName).permission; if(!cmdPerms) return null return MainGuilds.roles.cache.filter((r) => r.permissions.has(cmdPerms)); } const fullPermissions = command.reduce((accumulator, r) => { const roles = Roles(r.name); if (!roles) return accumulator; const permissions = roles.reduce((a, r) => { return [...a, {id: r.id, type: "ROLE", permission: true}] }, []); return [...accumulator, {id: r.id, permissions}]; }, []); await MainGuild.commands.permissions.set({ fullPermissions }); }); }); };