@@ -1218,6 +1218,22 @@ def _verify_user_or_role(user_or_role):
12181218 else :
12191219 raise commands .BadArgument (f'User or Role "{ user_or_role } " not found' )
12201220
1221+ @staticmethod
1222+ def _parse_level (name ):
1223+ name = name .upper ()
1224+ try :
1225+ return PermissionLevel [name ]
1226+ except KeyError :
1227+ pass
1228+ transform = {
1229+ "1" : PermissionLevel .REGULAR ,
1230+ "2" : PermissionLevel .SUPPORTER ,
1231+ "3" : PermissionLevel .MODERATOR ,
1232+ "4" : PermissionLevel .ADMINISTRATOR ,
1233+ "5" : PermissionLevel .OWNER ,
1234+ }
1235+ return transform .get (name )
1236+
12211237 @permissions .command (name = "add" , usage = "[command/level] [name] [user_or_role]" )
12221238 @checks .has_permissions (PermissionLevel .OWNER )
12231239 async def permissions_add (
@@ -1246,8 +1262,8 @@ async def permissions_add(
12461262 command = self .bot .get_command (name .lower ())
12471263 check = command is not None
12481264 else :
1249- check = name . upper () in PermissionLevel . __members__
1250- level = PermissionLevel [ name . upper ()] if check else None
1265+ level = self . _parse_level ( name )
1266+ check = level is not None
12511267
12521268 if not check :
12531269 embed = Embed (
@@ -1302,14 +1318,14 @@ async def permissions_remove(
13021318 if type_ == "command" :
13031319 name = getattr (self .bot .get_command (name .lower ()), "qualified_name" , name )
13041320 else :
1305- if name .upper () not in PermissionLevel .__members__ :
1321+ level = self ._parse_level (name )
1322+ if level is None :
13061323 embed = Embed (
13071324 title = "Error" ,
13081325 color = Color .red (),
13091326 description = f"The referenced { type_ } does not exist: `{ name } `." ,
13101327 )
13111328 return await ctx .send (embed = embed )
1312- level = PermissionLevel [name .upper ()]
13131329 name = level .name
13141330
13151331 value = self ._verify_user_or_role (user_or_role )
@@ -1370,9 +1386,15 @@ async def permissions_get(
13701386
13711387 To find a list of permission levels, see `{prefix}help perms`.
13721388
1389+ To view all command and level permissions:
1390+
13731391 Examples:
13741392 - `{prefix}perms get @user`
13751393 - `{prefix}perms get 984301093849028`
1394+
1395+ To view all users and roles of a command or level permission:
1396+
1397+ Examples:
13761398 - `{prefix}perms get command reply`
13771399 - `{prefix}perms get command plugin remove`
13781400 - `{prefix}perms get level SUPPORTER`
@@ -1401,7 +1423,9 @@ async def permissions_get(
14011423 if value in permissions :
14021424 levels .append (level .name )
14031425
1404- mention = getattr (user_or_role , "name" , user_or_role )
1426+ mention = getattr (
1427+ user_or_role , "name" , getattr (user_or_role , "id" , user_or_role )
1428+ )
14051429 desc_cmd = (
14061430 ", " .join (map (lambda x : f"`{ x } `" , cmds ))
14071431 if cmds
@@ -1436,8 +1460,8 @@ async def permissions_get(
14361460 command = self .bot .get_command (name .lower ())
14371461 check = command is not None
14381462 else :
1439- check = name . upper () in PermissionLevel . __members__
1440- level = PermissionLevel [ name . upper ()] if check else None
1463+ level = self . _parse_level ( name )
1464+ check = level is not None
14411465
14421466 if not check :
14431467 embed = Embed (
0 commit comments