diff options
| -rw-r--r-- | bot/exts/moderation/infraction/_scheduler.py | 6 | ||||
| -rw-r--r-- | bot/exts/moderation/infraction/management.py | 7 |
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}") |