3.2 KiB
name, description
| name | description |
|---|---|
| remind | Create, list, edit, enable, disable, and remove recurring or one-time reminders. Triggers on: "/remind", "remind me", "set a reminder". |
/remind
Reminders are stored in SQLite (db/reminders.sqlite) and delivered by the nanobot
user crontab, directly to Telegram, outside the agent. Reply to the user in their own language.
Commands
Create
/remind <text> every day at 9:00
/remind <text> every weekday at 9:30
/remind <text> at 2026-06-15T18:00
/remind <text> randomly 2 times between 08:00 and 20:00
/remind <text> once daily at random time between 8:00 and 21:00
Parse natural language, then call remind_edit.py add with flags:
--text "..."--cron "0 9 * * *"(repeatable)--at "2026-06-15T18:00:00"(repeatable)--random-times-per-day N --random-window HH:MM-HH:MM [--random-days DOW] [--random-from YYYY-MM-DD] [--random-until YYYY-MM-DD]
List
/remind list
Call remind_edit.py list. Returns a readable text listing — each reminder is prefixed with
#<id> (that id is what --id selects), followed by indented schedule lines:
#3 drink water [enabled]
cron: 0 9 * * *
#7 take meds [disabled]
at: 2026-06-15T18:00:00
random: 2× daily 09:00–21:00 (1-5) from 2026-06-01
An empty store prints (no active reminders).
Edit
/remind edit <keyword> --text "new text"
/remind edit <keyword> --replace-schedules --cron "0 10 * * *"
Call remind_edit.py edit --keyword <keyword>. Keyword matches case-insensitively against reminder text. --replace-schedules requires at least one new --cron/--at/--random-*.
Enable / Disable
/remind disable <keyword>
/remind enable <keyword>
Remove
/remind remove <keyword>
Soft delete. Hard delete only via direct DB access.
Selecting by keyword or id
edit, remove, enable, disable accept either --keyword (case-insensitive substring) or --id (exact). A keyword matching two or more reminders returns ambiguous with each id — retry with --id <n> to disambiguate duplicate texts. Run list to see ids.
Delivered (history)
/remind delivered
/remind delivered --since 2026-06-01
Answers "what reminders arrived today / since when?". Calls remind_edit.py delivered, which reads the reminder_fires table (delivered rows only, Prague local time). The agent never sees deliveries happen, so this is the only window into them.
Scripts
| Action | Command |
|---|---|
| list | uv run skills/remind/scripts/remind_edit.py list |
| add | uv run skills/remind/scripts/remind_edit.py add --text "..." ... |
| edit | uv run skills/remind/scripts/remind_edit.py edit --keyword <kw> ... |
| remove | uv run skills/remind/scripts/remind_edit.py remove --keyword <kw> |
| enable | uv run skills/remind/scripts/remind_edit.py enable --keyword <kw> |
| disable | uv run skills/remind/scripts/remind_edit.py disable --keyword <kw> |
| delivered | uv run skills/remind/scripts/remind_edit.py delivered [--since YYYY-MM-DD] |
Sender runs every minute from crontab: uv run skills/remind/scripts/remind_send.py
Environment
REMIND_DB— override SQLite path (used in tests).- Scripts run via
uv run(PEP 723 headers declare their dependencies).