@@ -61,25 +61,22 @@ const createPermissionsEmbed = async ({
6161 } ) ;
6262 }
6363 const title = "Managing permissions" ;
64- const allowedPermissions = options
65- . filter ( ( option ) => option . default )
66- . map ( ( option ) => option . label ) ;
67- const deniedPermissions = options
68- . filter ( ( option ) => ! ( option . default ?? false ) )
69- . map ( ( option ) => option . label ) ;
64+ // Make a map of permission names to the state ("allow", "deny")
65+ const permissionMap : { [ key : string ] : string } = { } ;
66+ for ( const option of options ) {
67+ permissionMap [ option . label ] = option . default ?? false ? "allow" : "deny" ;
68+ }
69+
7070 const description =
71- `
72- Current permissions for role <@&${ targetId } >\n` +
71+ `Current permissions for role <@&${ targetId } >\n` +
7372 ( first
7473 ? ""
7574 : "Permissions have been updated - but you can keep managing them\n\n" ) +
76- `**✅ Allowed:** ${
77- allowedPermissions . length > 0 ? allowedPermissions . join ( ", " ) : "None"
78- } \n` +
79- `**❌ Denied:** ${
80- deniedPermissions . length > 0 ? deniedPermissions . join ( ", " ) : "None"
81- }
82- ` ;
75+ Object . entries ( permissionMap )
76+ . map ( ( [ permission , state ] ) : string => {
77+ return `${ state === "allow" ? "✅" : "❌" } ${ permission } ` ;
78+ } )
79+ . join ( "\n" ) ;
8380 return {
8481 embed : addTipToEmbed ( { title, description, color : embedPink } ) ,
8582 components : [
@@ -126,11 +123,10 @@ const createPermissionsEmbed = async ({
126123 description +=
127124 "\nPermissions have been updated - but you can keep managing them" ;
128125 }
126+ const permissionMap : { [ key : string ] : "allow" | "inherit" | "deny" } = { } ;
129127 const allowOptions : APISelectMenuOption [ ] = [ ] ;
130128 const denyOptions : APISelectMenuOption [ ] = [ ] ;
131- const inheritedPermissions : string [ ] = [ ] ;
132- const allowedPermissions : string [ ] = [ ] ;
133- const deniedPermissions : string [ ] = [ ] ;
129+
134130 // If the permission is present in deny permissions it will be default in deny options
135131 // and vice versa
136132 // All permissions will be in both options
@@ -159,28 +155,19 @@ const createPermissionsEmbed = async ({
159155 description : internalPermission . description ,
160156 default : denied ,
161157 } ) ;
162- if ( allowed ) {
163- allowedPermissions . push ( internalPermission . readableName ) ;
164- } else if ( denied ) {
165- deniedPermissions . push ( internalPermission . readableName ) ;
166- } else {
167- // As it will be hard to filter out inherited permissions from options
168- inheritedPermissions . push ( internalPermission . readableName ) ;
169- }
158+ permissionMap [ internalPermission . readableName ] =
159+ allowed && ! denied ? "allow" : denied && ! allowed ? "deny" : "inherit" ;
170160 }
171161
172162 description +=
173- `\n\n**✅ Allowed:** ${
174- allowedPermissions . length > 0 ? allowedPermissions . join ( ", " ) : "None"
175- } \n` +
176- `**➡️ Inherited:** ${
177- inheritedPermissions . length > 0
178- ? inheritedPermissions . join ( ", " )
179- : "None"
180- } \n` +
181- `**❌ Denied:** ${
182- deniedPermissions . length > 0 ? deniedPermissions . join ( ", " ) : "None"
183- } `;
163+ "\n\n" +
164+ Object . entries ( permissionMap )
165+ . map ( ( [ permission , state ] ) : string => {
166+ return `${
167+ state === "allow" ? "✅" : state === "deny" ? "❌" : "➡️"
168+ } ${ permission } `;
169+ } )
170+ . join ( "\n" ) ;
184171
185172 return {
186173 embed : addTipToEmbed ( {
0 commit comments