A Go bot that reminds you stuff you'd forget via XMPP — both to MUC rooms and to individual users.
  • Go 99.2%
  • Dockerfile 0.8%
Find a file
RoiArthurB f212dcdd91
Some checks failed
Tests / test (push) Has been cancelled
fix(ci): Do not re-trigger test on tag push
2026-06-10 14:28:55 +07:00
.forgejo fix(ci): Do not re-trigger test on tag push 2026-06-10 14:28:55 +07:00
cmd/xmpp-reminderbot test: cover reminder loading at startup 2026-06-10 14:20:22 +07:00
internal fix: match full weekday names before abbreviations 2026-06-10 14:20:22 +07:00
.gitignore rewrite: full Python → Go rewrite 2026-06-02 23:33:39 +07:00
docker-compose.yml rewrite: full Python → Go rewrite 2026-06-02 23:33:39 +07:00
Dockerfile fix: install tzdata and ca-certificates in Alpine builder stage 2026-06-02 23:44:45 +07:00
go.mod feat: auto-downscale oversized avatars before publishing 2026-06-03 10:16:18 +07:00
go.sum feat: auto-downscale oversized avatars before publishing 2026-06-03 10:16:18 +07:00
README.md docs: correct the from-source build command 2026-06-10 14:20:14 +07:00
sample.config.yaml feat: set XMPP profile name and avatar on connect 2026-06-02 18:40:30 +07:00

XMPP Reminder Bot

XMPP Banner image

An XMPP bot to remind you about things! Adapted from matrix-reminder-bot.

Features

  • Set one-time or recurring reminders in MUC rooms or direct messages
  • Cron-tab syntax support for complex schedules
  • Alarms that repeat every 5 minutes until silenced
  • SQLite database for persistence
  • Allowlist/blocklist for access control

Installation

cp sample.config.yaml data/config.yaml
# edit data/config.yaml
docker compose up -d

From source

Requires Go 1.22+.

go build -o xmpp-reminderbot ./cmd/xmpp-reminderbot

Configuration

Copy sample.config.yaml to config.yaml and fill in your XMPP account details:

xmpp:
  jid: "bot@example.com"
  password: "yourpassword"
  server: "example.com"  # optional, uses SRV lookup if omitted
  port: 5222             # optional

storage:
  database: "bot.db"

Usage

./xmpp-reminderbot config.yaml

Commands

All commands use the configured prefix (default: !).

Reminders

  • !remindme|remind|r [every <recurring time>;] <start time>; <reminder text>
    Set a personal reminder.

  • !remindroom|rr [every <recurring time>;] <start time>; <reminder text>
    Set a room reminder.

  • !listreminders|list|lr|l
    List active reminders.

  • !cancelreminder|cancel|cr|c <reminder text or #id>
    Cancel a reminder, by its text or by the #id shown in the list.

Alarms

  • !alarmme|alarm|a [every <recurring time>;] <start time>; <reminder text>
    Set a personal alarm.

  • !alarmroom|ar [every <recurring time>;] <start time>; <reminder text>
    Set a room alarm.

  • !silence|s [<reminder text>]
    Silence a firing alarm.

Cron Syntax

  • !remindme|remind|r cron <min> <hour> <day of month> <month> <day of week>; <reminder text>
    Set a cron-based reminder.

License

Apache License 2.0