Skip to content

Avoid deleting reminders silentlyΒ #3015

@wookie184

Description

@wookie184

Currently a reminder will be ignored+deleted if the bot cannot get the channel it was meant to reply in:

def ensure_valid_reminder(self, reminder: dict) -> tuple[bool, discord.TextChannel]:
"""Ensure reminder channel can be fetched otherwise delete the reminder."""
channel = self.bot.get_channel(reminder["channel_id"])
is_valid = True
if not channel:
is_valid = False
log.info(
f"Reminder {reminder['id']} invalid: "
f"Channel {reminder['channel_id']}={channel}."
)
scheduling.create_task(self.bot.api_client.delete(f"bot/reminders/{reminder['id']}"))
return is_valid, channel

This could happen if the remind command was run in a thread, or a channel that was deleted.

There are a couple of options here:

  • Don't allow the command in threads, or always send the reminder to e.g. #bot-commands
  • Send the reminder to e.g. #bot-commands if it failed to send. Is it ok to send reminders that may have been run in a private channel to a public channel though?
  • Try to DM the reminder to the user(s) - DMs may not always be open though
  • Just tell them the reminder failed to send in #bot-commands - avoids ever leaking anything and is simple, but they don't get the contents.

This is an edge case so I think whatever the solution it should be as simple as possible, just something better than not reminding the user(s) at all.

Metadata

Metadata

Assignees

No one assigned

    Labels

    a: utilityRelated to utility commands: (bot, eval, extensions, jams, reminders, snekbox, utils)p: 2 - normalNormal Prioritys: planningDiscussing detailst: bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions