aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar MarkKoz <[email protected]>2019-12-11 21:00:47 -0800
committerGravatar MarkKoz <[email protected]>2019-12-11 21:01:26 -0800
commit729ac3d83a3bd4620d1e9b24769466e219d45de6 (patch)
tree19f0773d113c3a5ca784f1b87853c84dbd184cf0
parentAdd a generic converter for only allowing certain string values (diff)
ModManagement: allow "recent" as ID to edit infraction (#624)
It will attempt to find the most recent infraction authored by the invoker of the edit command.
-rw-r--r--bot/cogs/moderation/management.py23
1 files changed, 21 insertions, 2 deletions
diff --git a/bot/cogs/moderation/management.py b/bot/cogs/moderation/management.py
index 50bce3981..35832ded5 100644
--- a/bot/cogs/moderation/management.py
+++ b/bot/cogs/moderation/management.py
@@ -51,7 +51,7 @@ class ModManagement(commands.Cog):
async def infraction_edit(
self,
ctx: Context,
- infraction_id: int,
+ infraction_id: t.Union[int, string("recent")],
duration: t.Union[utils.Expiry, string("permanent"), None],
*,
reason: str = None
@@ -69,6 +69,9 @@ class ModManagement(commands.Cog):
\u2003`M` - minutesāˆ—
\u2003`s` - seconds
+ Use "recent" as the infraction ID to specify that the ost recent infraction authored by the
+ command invoker should be edited.
+
Use "permanent" to mark the infraction as permanent. Alternatively, an ISO 8601 timestamp
can be provided for the duration.
"""
@@ -77,7 +80,23 @@ class ModManagement(commands.Cog):
raise commands.BadArgument("Neither a new expiry nor a new reason was specified.")
# Retrieve the previous infraction for its information.
- old_infraction = await self.bot.api_client.get(f'bot/infractions/{infraction_id}')
+ if infraction_id == "recent":
+ params = {
+ "actor__id": ctx.author.id,
+ "ordering": "-inserted_at"
+ }
+ infractions = await self.bot.api_client.get(f"bot/infractions", params=params)
+
+ if infractions:
+ old_infraction = infractions[0]
+ infraction_id = old_infraction["id"]
+ else:
+ await ctx.send(
+ f":x: Couldn't find most recent infraction; you have never given an infraction."
+ )
+ return
+ else:
+ old_infraction = await self.bot.api_client.get(f"bot/infractions/{infraction_id}")
request_data = {}
confirm_messages = []