@@ -1218,6 +1218,22 @@ def _verify_user_or_role(user_or_role):
1218
1218
else :
1219
1219
raise commands .BadArgument (f'User or Role "{ user_or_role } " not found' )
1220
1220
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
+
1221
1237
@permissions .command (name = "add" , usage = "[command/level] [name] [user_or_role]" )
1222
1238
@checks .has_permissions (PermissionLevel .OWNER )
1223
1239
async def permissions_add (
@@ -1246,8 +1262,8 @@ async def permissions_add(
1246
1262
command = self .bot .get_command (name .lower ())
1247
1263
check = command is not None
1248
1264
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
1251
1267
1252
1268
if not check :
1253
1269
embed = Embed (
@@ -1302,14 +1318,14 @@ async def permissions_remove(
1302
1318
if type_ == "command" :
1303
1319
name = getattr (self .bot .get_command (name .lower ()), "qualified_name" , name )
1304
1320
else :
1305
- if name .upper () not in PermissionLevel .__members__ :
1321
+ level = self ._parse_level (name )
1322
+ if level is None :
1306
1323
embed = Embed (
1307
1324
title = "Error" ,
1308
1325
color = Color .red (),
1309
1326
description = f"The referenced { type_ } does not exist: `{ name } `." ,
1310
1327
)
1311
1328
return await ctx .send (embed = embed )
1312
- level = PermissionLevel [name .upper ()]
1313
1329
name = level .name
1314
1330
1315
1331
value = self ._verify_user_or_role (user_or_role )
@@ -1370,9 +1386,15 @@ async def permissions_get(
1370
1386
1371
1387
To find a list of permission levels, see `{prefix}help perms`.
1372
1388
1389
+ To view all command and level permissions:
1390
+
1373
1391
Examples:
1374
1392
- `{prefix}perms get @user`
1375
1393
- `{prefix}perms get 984301093849028`
1394
+
1395
+ To view all users and roles of a command or level permission:
1396
+
1397
+ Examples:
1376
1398
- `{prefix}perms get command reply`
1377
1399
- `{prefix}perms get command plugin remove`
1378
1400
- `{prefix}perms get level SUPPORTER`
@@ -1401,7 +1423,9 @@ async def permissions_get(
1401
1423
if value in permissions :
1402
1424
levels .append (level .name )
1403
1425
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
+ )
1405
1429
desc_cmd = (
1406
1430
", " .join (map (lambda x : f"`{ x } `" , cmds ))
1407
1431
if cmds
@@ -1436,8 +1460,8 @@ async def permissions_get(
1436
1460
command = self .bot .get_command (name .lower ())
1437
1461
check = command is not None
1438
1462
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
1441
1465
1442
1466
if not check :
1443
1467
embed = Embed (
0 commit comments