aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar MarkKoz <[email protected]>2019-09-27 20:14:43 -0700
committerGravatar MarkKoz <[email protected]>2019-10-01 18:25:32 -0700
commit85a8be86539d453b4eae4d557f73ebb0d9d3cddf (patch)
treed399d4ccf14429158d0f1802e1b934609350a82f
parentMove infraction search and edit commands to a new cog (diff)
Replace with_role decorator with a cog check in the moderation cog
-rw-r--r--bot/cogs/moderation.py22
1 files changed, 8 insertions, 14 deletions
diff --git a/bot/cogs/moderation.py b/bot/cogs/moderation.py
index 35bc24195..36553e536 100644
--- a/bot/cogs/moderation.py
+++ b/bot/cogs/moderation.py
@@ -10,9 +10,10 @@ from discord.ext.commands import BadUnionArgument, Bot, Cog, Context, command
from bot import constants
from bot.cogs.modlog import ModLog
-from bot.constants import Colours, Event, Icons, MODERATION_ROLES
+from bot.constants import Colours, Event, Icons
from bot.converters import Duration
-from bot.decorators import respect_role_hierarchy, with_role
+from bot.decorators import respect_role_hierarchy
+from bot.utils.checks import with_role_check
from bot.utils.moderation import (
Infraction, MemberObject, already_has_active_infraction, post_infraction, proxy_user
)
@@ -61,7 +62,6 @@ class Moderation(Scheduler, Cog):
# region: Permanent infractions
- @with_role(*MODERATION_ROLES)
@command()
async def warn(self, ctx: Context, user: MemberConverter, *, reason: str = None) -> None:
"""Create a warning infraction in the database for a user."""
@@ -71,7 +71,6 @@ class Moderation(Scheduler, Cog):
await self.apply_infraction(ctx, infraction, user)
- @with_role(*MODERATION_ROLES)
@command()
@respect_role_hierarchy()
async def kick(self, ctx: Context, user: Member, *, reason: str = None) -> None:
@@ -85,7 +84,6 @@ class Moderation(Scheduler, Cog):
action = user.kick(reason=reason)
await self.apply_infraction(ctx, infraction, user, action)
- @with_role(*MODERATION_ROLES)
@command()
@respect_role_hierarchy()
async def ban(self, ctx: Context, user: MemberConverter, *, reason: str = None) -> None:
@@ -106,7 +104,6 @@ class Moderation(Scheduler, Cog):
# endregion
# region: Temporary infractions
- @with_role(*MODERATION_ROLES)
@command(aliases=('mute',))
async def tempmute(self, ctx: Context, user: Member, duration: Duration, *, reason: str = None) -> None:
"""
@@ -126,7 +123,6 @@ class Moderation(Scheduler, Cog):
action = user.add_roles(self._muted_role, reason=reason)
await self.apply_infraction(ctx, infraction, user, action)
- @with_role(*MODERATION_ROLES)
@command()
@respect_role_hierarchy()
async def tempban(self, ctx: Context, user: MemberConverter, duration: Duration, *, reason: str = None) -> None:
@@ -151,7 +147,6 @@ class Moderation(Scheduler, Cog):
# endregion
# region: Permanent shadow infractions
- @with_role(*MODERATION_ROLES)
@command(hidden=True)
async def note(self, ctx: Context, user: MemberConverter, *, reason: str = None) -> None:
"""
@@ -165,7 +160,6 @@ class Moderation(Scheduler, Cog):
await self.apply_infraction(ctx, infraction, user)
- @with_role(*MODERATION_ROLES)
@command(hidden=True, aliases=['shadowkick', 'skick'])
@respect_role_hierarchy()
async def shadow_kick(self, ctx: Context, user: Member, *, reason: str = None) -> None:
@@ -183,7 +177,6 @@ class Moderation(Scheduler, Cog):
action = user.kick(reason=reason)
await self.apply_infraction(ctx, infraction, user, action)
- @with_role(*MODERATION_ROLES)
@command(hidden=True, aliases=['shadowban', 'sban'])
@respect_role_hierarchy()
async def shadow_ban(self, ctx: Context, user: MemberConverter, *, reason: str = None) -> None:
@@ -208,7 +201,6 @@ class Moderation(Scheduler, Cog):
# endregion
# region: Temporary shadow infractions
- @with_role(*MODERATION_ROLES)
@command(hidden=True, aliases=["shadowtempmute, stempmute", "shadowmute", "smute"])
async def shadow_tempmute(
self, ctx: Context, user: Member, duration: Duration, *, reason: str = None
@@ -232,7 +224,6 @@ class Moderation(Scheduler, Cog):
action = await user.add_roles(self._muted_role, reason=reason)
await self.apply_infraction(ctx, infraction, user, action)
- @with_role(*MODERATION_ROLES)
@command(hidden=True, aliases=["shadowtempban, stempban"])
@respect_role_hierarchy()
async def shadow_tempban(
@@ -261,7 +252,6 @@ class Moderation(Scheduler, Cog):
# endregion
# region: Remove infractions (un- commands)
- @with_role(*MODERATION_ROLES)
@command()
async def unmute(self, ctx: Context, user: MemberConverter) -> None:
"""Deactivates the active mute infraction for a user."""
@@ -339,7 +329,6 @@ class Moderation(Scheduler, Cog):
log.exception("There was an error removing an infraction.")
await ctx.send(":x: There was an error removing the infraction.")
- @with_role(*MODERATION_ROLES)
@command()
async def unban(self, ctx: Context, user: MemberConverter) -> None:
"""Deactivates the active ban infraction for a user."""
@@ -606,6 +595,11 @@ class Moderation(Scheduler, Cog):
# endregion
# This cannot be static (must have a __func__ attribute).
+ def cog_check(self, ctx: Context) -> bool:
+ """Only allow moderators to invoke the commands in this cog."""
+ return with_role_check(ctx, *constants.MODERATION_ROLES)
+
+ # This cannot be static (must have a __func__ attribute).
async def cog_command_error(self, ctx: Context, error: Exception) -> None:
"""Send a notification to the invoking context on a Union failure."""
if isinstance(error, BadUnionArgument):