diff options
| -rw-r--r-- | bot/exts/utils/reminders.py | 39 | 
1 files changed, 23 insertions, 16 deletions
diff --git a/bot/exts/utils/reminders.py b/bot/exts/utils/reminders.py index 441b0353f..f0aa280b6 100644 --- a/bot/exts/utils/reminders.py +++ b/bot/exts/utils/reminders.py @@ -18,7 +18,7 @@ from bot.utils.checks import has_any_role_check, has_no_roles_check  from bot.utils.lock import lock_arg  from bot.utils.messages import send_denial  from bot.utils.scheduling import Scheduler -from bot.utils.time import TimestampFormats, discord_timestamp, time_since +from bot.utils.time import TimestampFormats, discord_timestamp  log = logging.getLogger(__name__) @@ -172,32 +172,39 @@ class Reminders(Cog):          if not is_valid:              # No need to cancel the task too; it'll simply be done once this coroutine returns.              return -          embed = discord.Embed() -        embed.colour = discord.Colour.blurple() -        embed.set_author( -            icon_url=Icons.remind_blurple, -            name="It has arrived!" -        ) - -        # Let's not use a codeblock to keep emojis and mentions working. Embeds are safe anyway. -        embed.description = f"Here's your reminder: {reminder['content']}" - -        if reminder.get("jump_url"):  # keep backward compatibility -            embed.description += f"\n[Jump back to when you created the reminder]({reminder['jump_url']})" -          if expected_time:              embed.colour = discord.Colour.red()              embed.set_author(                  icon_url=Icons.remind_red, -                name=f"Sorry it should have arrived {time_since(expected_time)} !" +                name="Sorry, your reminder should have arrived earlier!" +            ) +        else: +            embed.colour = discord.Colour.blurple() +            embed.set_author( +                icon_url=Icons.remind_blurple, +                name="It has arrived!"              ) +        # Let's not use a codeblock to keep emojis and mentions working. Embeds are safe anyway. +        embed.description = f"Here's your reminder: {reminder['content']}" + +        # Here the jump URL is in the format of base_url/guild_id/channel_id/message_id          additional_mentions = ' '.join(              mentionable.mention for mentionable in self.get_mentionables(reminder["mentions"])          ) -        await channel.send(content=f"{user.mention} {additional_mentions}", embed=embed) +        jump_url = reminder.get("jump_url") +        embed.description += f"\n[Jump back to when you created the reminder]({jump_url})" +        partial_message = channel.get_partial_message(int(jump_url.split("/")[-1])) +        try: +            await partial_message.reply(content=f"{additional_mentions}", embed=embed) +        except discord.HTTPException as e: +            log.error( +                f"There was an error when trying to reply to a reminder invocation message, {e}, " +                "fall back to using jump_url" +            ) +            await channel.send(content=f"{user.mention} {additional_mentions}", embed=embed)          log.debug(f"Deleting reminder #{reminder['id']} (the user has been reminded).")          await self.bot.api_client.delete(f"bot/reminders/{reminder['id']}")  |