From 4ddece1e0f81296a692e408324f4318b6ea9bd82 Mon Sep 17 00:00:00 2001 From: Conatum Date: Tue, 22 Aug 2023 22:48:22 +0300 Subject: [PATCH] (wards): Add moderator ward. --- src/modules/economy/cog.py | 8 ++++---- src/wards.py | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/modules/economy/cog.py b/src/modules/economy/cog.py index fbf8901c..99a8a907 100644 --- a/src/modules/economy/cog.py +++ b/src/modules/economy/cog.py @@ -11,7 +11,7 @@ from data import ORDER from utils.ui import Confirm, Pager from utils.lib import error_embed, MessageArgs, utc_now -from wards import low_management_ward +from wards import low_management_ward, moderator_ward from constants import MAX_COINS from . import babel, logger @@ -113,7 +113,7 @@ class Economy(LionCog): "New balance to set the target's balance to." ) ) - @low_management_ward + @moderator_ward async def economy_balance_cmd( self, ctx: LionContext, @@ -511,7 +511,7 @@ class Economy(LionCog): "Target user or role to view or update. Use @everyone to reset the entire guild." ), ) - @low_management_ward + @moderator_ward async def economy_reset_cmd( self, ctx: LionContext, @@ -805,7 +805,7 @@ class Economy(LionCog): ] ) @appcmds.default_permissions(manage_guild=True) - @low_management_ward + @moderator_ward async def configure_economy(self, ctx: LionContext, allow_transfers: Optional[appcmds.Choice[int]] = None, coins_per_xp: Optional[appcmds.Range[int, 0, 2**15]] = None): diff --git a/src/wards.py b/src/wards.py index d058e3b6..18704d4c 100644 --- a/src/wards.py +++ b/src/wards.py @@ -99,6 +99,25 @@ async def low_management_ward(ctx: LionContext) -> bool: ) +@cmds.check +async def moderator_ward(ctx: LionContext) -> bool: + if not ctx.guild: + return False + passed = await low_management(ctx.bot, ctx.author) + if passed: + return True + modrole = ctx.lguild.data.mod_role + roleids = [role.id for role in ctx.author.roles] + if not (modrole and modrole in roleids): + raise CheckFailure( + ctx.bot.translator.t(_p( + 'ward:moderator|failed', + "You must have the configured moderator role, " + "or `MANAGE_GUILD` permissions to do this." + )) + ) + return True + # ---- Assorted manual wards and checks ----