this.on('ready', async () => { const guild = await this.guilds.fetch('869805946854068281'); await guild.commands.set(commands).then((cmd) => { const getRoles = (commandName: string) => { const permissions = this.interactions.find( (x) => x.name === commandName ).permission; if (!permissions) return null; return guild.roles.cache.filter( (x) => x.permissions.has(permissions) && !x.managed ); }; const fullPermissions = cmd.reduce((accumulator, x) => { const roles = getRoles(x.name); if (!roles) return accumulator; const permissions = roles.reduce((a, v) => { return [ ...a, { id: v.id, type: ApplicationCommandPermissionType['Role'], permission: true, }, ]; }, []); return [ ...accumulator, { id: x.id, permissions: permissions, }, ]; }, []); guild.commands.permissions.set({ fullPermissions: fullPermissions, }); }); });