aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/exts/moderation/infraction/_scheduler.py6
-rw-r--r--bot/exts/moderation/infraction/management.py7
2 files changed, 13 insertions, 0 deletions
diff --git a/bot/exts/moderation/infraction/_scheduler.py b/bot/exts/moderation/infraction/_scheduler.py
index 47b639421..e607bf752 100644
--- a/bot/exts/moderation/infraction/_scheduler.py
+++ b/bot/exts/moderation/infraction/_scheduler.py
@@ -137,8 +137,14 @@ class InfractionScheduler:
icon = _utils.INFRACTION_ICONS[infr_type][0]
reason = infraction["reason"]
expiry = time.format_with_duration(infraction["expires_at"])
+ expiry_datetime = arrow.get(infraction["expires_at"])
id_ = infraction['id']
+ now_datetime = arrow.utcnow()
+ if expiry_datetime < now_datetime:
+ await ctx.send(":x: Expiration is in the past.")
+ return False
+
if user_reason is None:
user_reason = reason
diff --git a/bot/exts/moderation/infraction/management.py b/bot/exts/moderation/infraction/management.py
index dda3fadae..3a2ee7ad0 100644
--- a/bot/exts/moderation/infraction/management.py
+++ b/bot/exts/moderation/infraction/management.py
@@ -1,7 +1,10 @@
import textwrap
import typing as t
+import arrow
import discord
+from dateutil.relativedelta import relativedelta
+from dateutil.tz import tzutc
from discord.ext import commands
from discord.ext.commands import Context
from discord.utils import escape_markdown
@@ -146,6 +149,10 @@ class ModManagement(commands.Cog):
request_data['expires_at'] = None
confirm_messages.append("marked as permanent")
elif duration is not None:
+ now_datetime = arrow.utcnow()
+ if duration < now_datetime:
+ await ctx.send(":x: Expiration is in the past.")
+ return
request_data['expires_at'] = duration.isoformat()
expiry = time.format_with_duration(duration)
confirm_messages.append(f"set to expire on {expiry}")