const { Client } = require("discord.js"); const { Perms } = require("../validations/Permissions"); const { promisify } = require("util"); const { glob } = require("glob"); const Ascii = require("ascii-table"); const PG = promisify(glob); /** * @param {Client} client */ module.exports = async (client) => { const Table = new Ascii("Slash command loaded"); SlashComanndsArray = []; (await PG(`${process.cwd()}SlashCommands/*/*.js`)).map(async (file) => { const SlashCommand = require(file); if(!SlashCommand.name) return Table.addRow(file.split("/")[7], "🔶 Failed", "Missing a name"); if(!SlashCommand.description) return Table.addRow(SlashCommand.name, "🔶 Failed", "Missing a description"); if(SlashCommand.permission) { if(Perms.includes(SlashCommand.permission)) SlashCommand.defaultPermission = false; else return Table.addRow(SlashCommand.name, "🔶 Failed", "Invalid permission"); }; client.SlashCommands.set(SlashCommand.name, SlashCommand); SlashComanndsArray.push(SlashCommand); await Table.addRow(SlashCommand.name, "🔹 Successfull"); }); console.log(Table.toString()); client.on("ready", async () => { const Mainguild = await client.guilds.cache.get("926674245357039657"); Mainguild.SlashCommands.set(SlashComanndsArray).then(async (SlashCommand) => { const Roles = (SlashCommandName) => { const cmdPerms = SlashComanndsArray.find((c) => c.name === SlashCommandName).permission; if(!cmdPerms) return null; return Mainguild.roles.cache.filter((r) => r.permissions.has(cmdPerms)); }; const FullPermissions = SlashCommand.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.SlashCommands.permissions.set({ FullPermissions }); }); }) }