From c3a20b941ead81f8ede3507bb1cf09cdcaf452ea Mon Sep 17 00:00:00 2001 From: FrozenChen Date: Wed, 3 Jun 2026 20:34:25 -0300 Subject: [PATCH] Fix some issues with remindme command --- cogs/extras.py | 8 ++++++-- utils/converters.py | 4 ++-- utils/utils.py | 1 + 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/cogs/extras.py b/cogs/extras.py index a1d56c89..7a57b7d6 100644 --- a/cogs/extras.py +++ b/cogs/extras.py @@ -498,15 +498,19 @@ class Extras(commands.GroupCog): @commands.dynamic_cooldown(KurisuCooldown(1, 300.0), commands.BucketType.member) @commands.hybrid_command() async def remindme(self, ctx: KurisuContext, remind_in: int = commands.parameter(converter=DateOrTimeToSecondsConverter), *, reminder: str): - """Sends a reminder after a set time, just for you. Max reminder size is 800 characters. + """Sends a reminder after a set time, just for you. + Date format is only supported for slash command and date is treated as UTC. + Max reminder size is 800 characters. Args: - remind_in: Time to remind you in can be in a #d#h#m#s format or a YYYY-MM-DD HH:MM:SS format. + remind_in: Time to remind you in, can be in a #d#h#m#s format or a YYYY-MM-DD HH:MM format. reminder: Contents of the reminders. Max 800 characters. """ if remind_in < 30 or remind_in > 3.154e+7: + ctx.command.reset_cooldown(ctx) return await ctx.send("You can't set a reminder for less than 30 seconds or for more than a year.") if len(reminder) > 800: + ctx.command.reset_cooldown(ctx) return await ctx.send("The reminder is too big! (Longer than 800 characters)") timestamp = datetime.now(self.bot.tz) delta = timedelta(seconds=remind_in) diff --git a/utils/converters.py b/utils/converters.py index 3b01c10e..aafcc676 100644 --- a/utils/converters.py +++ b/utils/converters.py @@ -1,6 +1,6 @@ import discord -from datetime import datetime +from datetime import datetime, timezone from discord import app_commands, Member from discord.ext.commands import BadArgument, MemberConverter, ObjectConverter, MessageConverter, Context, Converter, ObjectNotFound, ChannelNotFound from utils.utils import parse_date, parse_time @@ -43,7 +43,7 @@ class MemberOrID(Converter): class DateOrTimeToSecondsConverter(Converter): async def convert(self, ctx: Context, arg: str): if (datetime_obj := parse_date(arg)) is not None: - return int((datetime_obj - datetime.utcnow()).total_seconds()) + return int((datetime_obj - datetime.now(timezone.utc)).total_seconds()) elif (seconds := parse_time(arg)) != -1: return seconds raise BadArgument("Invalid date/time format") diff --git a/utils/utils.py b/utils/utils.py index a08ed287..9cfb43d7 100644 --- a/utils/utils.py +++ b/utils/utils.py @@ -126,6 +126,7 @@ def parse_date(date_string: str) -> Optional[datetime.datetime]: return None try: datetime_obj = datetime.datetime.strptime(' '.join(date_lst), "%Y-%m-%d %H:%M") + datetime_obj = datetime_obj.replace(tzinfo=datetime.timezone.utc) except ValueError: return None return datetime_obj