Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement “snooze” command #139

Open
shimi-ke opened this issue Jan 22, 2024 · 4 comments
Open

Implement “snooze” command #139

shimi-ke opened this issue Jan 22, 2024 · 4 comments
Labels
enhancement New feature or request

Comments

@shimi-ke
Copy link

It would be nice if a reminder could be snoozed for a certain period. It could work with writing “!snooze” or just “!s” command after having received the message with the reminder. If the “!snooze” command would be used without any time it would snooze for the default time which could be set with an environment variable. Or one could set the snooze time in the command itself, e.g. “!snooze 10 minutes”. To not overcomplicate the logic it should work just for the recent reminder.

@HarHarLinks HarHarLinks added the enhancement New feature or request label Jan 25, 2024
@HarHarLinks
Copy link
Collaborator

I have wanted this in the past, or actually I keep re-scheduling some reminders that I can't properly address as I receive them, so I like the idea a lot. We will need to see how to deal with !silent already taking the short form !s

@shimi-ke
Copy link
Author

That's great you are considering this enhancement. Since !s is taken, you could use !p as !postpone instead. Or !ra as !remindagain. Thank you for your effort.

@HarHarLinks
Copy link
Collaborator

So, from the implementation side, this is a bit trickier than it might seem at a glance.

In the case of silencing ringing alarms, we can easily automatically figure out which one to silence, because it is still firing and this means we're still tracking it in the database.

Reminders however are removed from the database as they are fired, so we need a way to figure out which one is meant. I can see a couple options.

  • "matrix native": search the history backwards for messages sent by the bot and parse them to match for the "firing reminder" format. Parsing seems majorly messy. We could attach custom fields to firing reminders' matrix event json (like hookshot) which would allow us to identify firing reminders by a marker field and even keep the structured data for repeated use. Still, scrolling back in history might be messy, too.
    • the situation is a bit better if we only allow this via relations (mark the reminder you want to snooze by replying or reacting to it, etc), because this makes it easy (or easier) for the bot to fetch the reminder event by ID, which I think would be more reliable at least.
  • selecting the reminder to snooze by label is nonsense, because you can just set a new reminder with the new text instead
    • again relations are the only reasonable UX I can think of here if you want to snooze another than the latest reminder
  • keep the last reminder from each room in the database just in case someone wants to snooze it later, similar to currently firing alarms

i kinda wanna do the matrix native option, just cause. also, it seems like we need to finally support relations #55 #67 #93

@shimi-ke
Copy link
Author

I can't suggest any option because I have no idea how the internals of both matrix and remider-bot work. For me just replying or reacting to the reminder would work provided there is an option in config to set the default snooze time.

Thank your for your time and effort.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants