From 43c3ae175751c21d38b701962b5eabacf27fb998 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sk=C3=BDpala?= Date: Mon, 27 Mar 2023 23:11:43 +0200 Subject: [PATCH] Listing and deleting secret roles --- cogs/roles.py | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/cogs/roles.py b/cogs/roles.py index 7bafd29..75155f4 100644 --- a/cogs/roles.py +++ b/cogs/roles.py @@ -9,9 +9,13 @@ class Roles(commands.Cog): def __init__(self, bot): self.bot = bot - @discord.slash_command() - @discord.default_permissions(manage_roles=True) - async def addsecretrole(self, ctx, role: discord.role.Role, password: str): + secret_roles = discord.SlashCommandGroup( + "secretroles", + checks=[commands.has_permissions(manage_roles=True)] + ) + + @secret_roles.command() + async def add(self, ctx, role: discord.role.Role, password: str): roles = data.load_data(ROLES_JSON) if password in roles["secret_roles"]: return await ctx.respond(f"Password ``{password}`` is already used.", ephemeral=True) @@ -19,6 +23,32 @@ class Roles(commands.Cog): roles["secret_roles"][password] = role.id data.dump_data(ROLES_JSON, roles) return await ctx.respond(f"Secret role {role.mention} added with password {password}.", ephemeral=True) + + @secret_roles.command() + async def list(self, ctx): + roles = data.load_data(ROLES_JSON) + if len(roles["secret_roles"]) == 0: + return await ctx.respond(f"No current secret roles.", ephemeral=True) + msg = "" + for passwd, role in roles["secret_roles"].items(): + role = get(ctx.author.guild.roles, id=role) + msg += f"``{passwd}``: {role.mention}\n" + return await ctx.respond(msg, ephemeral=True) + + @secret_roles.command() + async def delete(self, ctx, password: str): + roles = data.load_data(ROLES_JSON) + if password not in roles["secret_roles"]: + return await ctx.respond(f"Role with passowrd {password} does not exist.", ephemeral=True) + + role = get(ctx.author.guild.roles, id=roles["secret_roles"][password]) + del roles["secret_roles"][password] + data.dump_data(ROLES_JSON, roles) + return await ctx.respond( + f"Secret role {role.mention} no longer obtainable with password {password}.", + ephemeral=True + ) + @discord.slash_command() async def secretrole(self, ctx, password: str):