Skip to main content
The reminder system lets members set personal reminders using natural language time expressions. The bot delivers reminders via DM first, falling back to a channel mention if DMs are disabled. Reminders include snooze buttons for 15 minutes, 1 hour, or until tomorrow.

Configuration

config.json
{
  "reminders": {
    "enabled": false,
    "maxPerUser": 25
  }
}
Set enabled to true to activate the feature. maxPerUser controls how many active (uncompleted) reminders a single member can have at one time. The default is 25.

Setting a reminder

Run /remind me with a time expression and a message:
/remind me when: in 2 hours  message: Review the pull request
/remind me when: tomorrow at 3pm  message: Team standup
/remind me when: 5m  message: Check the oven
The bot replies ephemerally with the reminder ID and a relative timestamp:
✅ Reminder #42 set! I'll remind you in 2 hours (March 21 2026, 4:30 PM).
> Review the pull request

Supported time formats

The when option supports natural language expressions:
InputResolves to
in 5 minutes5 minutes from now
in 2 hours2 hours from now
in 1 day24 hours from now
5m5 minutes from now
2h2 hours from now
1d1 day from now
30s30 seconds from now
InputResolves to
tomorrowNext calendar day, midnight
tomorrow at 3pmNext calendar day, 3:00 PM
next mondayThe coming Monday
next friday at 9amThe coming Friday, 9:00 AM
Times must be in the future. If the parsed time is in the past, the command returns an error.

Reminder delivery

The scheduler checks for due reminders every 60 seconds. For each due reminder:
  1. The bot attempts to deliver via DM.
  2. If DMs fail, it falls back to a channel mention in the channel where /remind me was run.
  3. If both fail, the failure count increments. After 3 consecutive failures, the reminder is marked completed and no further attempts are made.
The delivered reminder includes:
  • An embed with the reminder message, creation timestamp, and reminder ID
  • Snooze buttons: 15m, 1h, Tomorrow, and Dismiss

Snoozing and dismissing

The snooze buttons on the reminder notification reschedule the reminder:
ButtonReschedules to
15m15 minutes from now
1h1 hour from now
Tomorrow24 hours from now
DismissMarks the reminder as completed
Only the owner of the reminder can interact with the snooze buttons. Clicking a button on someone else’s reminder returns an error.
Snooze buttons on already-completed reminders (e.g. stale messages in a channel) return an error rather than reactivating the reminder.

Recurring reminders

The database schema supports a recurring_cron field. When set, the bot reschedules the reminder to the next cron run time after delivery instead of marking it completed. Cron expressions use standard 5-field format:
┌───── minute (0–59)
│ ┌───── hour (0–23)
│ │ ┌───── day of month (1–31)
│ │ │ ┌───── month (1–12)
│ │ │ │ ┌───── day of week (0–6, Sunday=0)
│ │ │ │ │
* * * * *
Example: 0 9 * * 1 fires every Monday at 9:00 AM.
Recurring reminders are currently created through the database directly or via the API. The /remind me command creates one-time reminders only.

Commands

Creates a new reminder.
OptionRequiredMax lengthDescription
whenYes200Time expression
messageYes1,000What to remind you about
Available to all members.
Shows all your active (uncompleted) reminders, ordered by next fire time. Displays the message preview, relative time, recurring cron (if any), and snooze count.No options. Available to all members.
Cancels an active reminder by ID. You can only cancel your own reminders.
OptionRequiredDescription
idYesReminder ID (shown in the confirmation when you set the reminder)
Available to all members.

Build docs developers (and LLMs) love