Skip to content

Commit c596f1c

Browse files
committed
1-5 as level names
1 parent af90421 commit c596f1c

File tree

2 files changed

+32
-7
lines changed

2 files changed

+32
-7
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ however, insignificant breaking changes does not guarantee a major version bump,
2525
- `?help` works for alias and snippets.
2626
- `?config help <config-name>` shows a help embed for the configuration.
2727
- Support setting permissions for sub commands.
28+
- Support numbers (1-5) as substitutes for Permission Level REGULAR - OWNER in `?perms` sub commands.
2829

2930
### Changes
3031

cogs/utility.py

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)