As the title suggests, I am trying to figure out a way to update my slash commands cache on role permissions updates, because as right now whenever I make changes to role permissions, the slash commands cache only recognises the roles permission when from when it initially starts up, and I'd like to change this.
If anyone could lend a helping hand, I'd really appreciate it!
module.exports = {
new: 'roleUpdate',
async execute(oldRole, newRole) {
if (oldRole.permissions !== newRole.permissions) {
client.guilds.cache.forEach((g) => {
g.commands.set(CommandsArray).then(async (command) => {
const Roles = (commandName) => {
const cmdPerms = CommandsArray.find((c) => c.name === commandName).permission;
if (!cmdPerms) return null;
return g.roles.cache.filter((r) => r.permissions.has(cmdPerms) && !r.managed).first(10);
}
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 g.commands.permissions.set({ fullPermissions });
});
});
}
}
}