docs: update docs for calendar reminders

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
user
2026-02-15 12:39:47 +01:00
parent f888faf2bd
commit 2333af0624
3 changed files with 47 additions and 0 deletions

View File

@@ -20,6 +20,7 @@
| Date | Task |
|------|------|
| 2026-02-15 | Calendar-based reminders (at/yearly) with persistence |
| 2026-02-15 | v1.1.0 (channel filter, JSON logging, dork, wayback, tests) |
| 2026-02-15 | v1.0.0 (IRCv3, chanmgmt, state persistence) |
| 2026-02-15 | Wave 4 (opslog, note, subdomain, headers, exploitdb, payload) |

View File

@@ -273,6 +273,21 @@ MAXMIND_LICENSE_KEY=xxx ./scripts/update-data.sh # + GeoLite2
!timer cancel deploy # Cancel a timer
```
## Remind
```
!remind 5m check oven # One-shot (in-memory)
!remind every 1h hydrate # Repeating (in-memory)
!remind at 2027-06-15 deploy # Calendar one-shot (persisted)
!remind at 2027-06-15 14:30 go # With explicit time
!remind yearly 02-14 valentines # Yearly recurring (persisted)
!remind yearly 12-25 09:00 xmas # Yearly with time
!remind list # Show active reminders
!remind cancel abc123 # Cancel by ID
```
Default time: 12:00. Timezone: `bot.timezone` config (default UTC).
## Plugin Template
```python

View File

@@ -50,6 +50,7 @@ plugins_dir = "plugins" # Plugin directory path
rate_limit = 2.0 # Max messages per second (default: 2.0)
rate_burst = 5 # Burst capacity (default: 5)
admins = [] # Hostmask patterns (fnmatch), IRCOPs auto-detected
timezone = "UTC" # Timezone for calendar reminders (IANA tz name)
[logging]
level = "info" # Logging level: debug, info, warning, error
@@ -99,6 +100,12 @@ format = "text" # Log format: "text" (default) or "json"
| `!timer <duration> [label]` | Set countdown timer with notification |
| `!timer list` | Show active timers |
| `!timer cancel <label>` | Cancel a running timer |
| `!remind <duration> <text>` | One-shot reminder after duration |
| `!remind every <duration> <text>` | Repeating reminder at interval |
| `!remind at <YYYY-MM-DD> [HH:MM] <text>` | Calendar reminder at specific date/time |
| `!remind yearly <MM-DD> [HH:MM] <text>` | Yearly recurring reminder |
| `!remind list` | Show all active reminders |
| `!remind cancel <id>` | Cancel a reminder by ID |
| `!geoip <ip>` | GeoIP lookup (city, country, coords, timezone) |
| `!asn <ip>` | ASN lookup (AS number, organization) |
| `!tor <ip\|update>` | Check IP against Tor exit nodes |
@@ -412,6 +419,30 @@ the IRC 512-byte line limit (RFC 2812). The overhead of `PRIVMSG <target> :`
and `\r\n` is accounted for, so plugins can send arbitrarily long text
without worrying about protocol limits.
### `!remind` -- Reminders
Set one-shot, repeating, or calendar-based reminders. Duration-based reminders
are in-memory and lost on restart. Calendar reminders (`at`, `yearly`) are
persisted via `bot.state` and restored on reconnect.
```
!remind 5m check the oven One-shot after 5 minutes
!remind 2d12h renew cert One-shot after 2 days 12 hours
!remind every 1h drink water Repeat every hour
!remind at 2027-06-15 deploy release Fire at specific date (noon default)
!remind at 2027-06-15 14:30 deploy Fire at specific date + time
!remind yearly 02-14 valentines Every year on Feb 14 at noon
!remind yearly 12-25 09:00 merry xmas Every year on Dec 25 at 09:00
!remind list Show all active reminders
!remind cancel abc123 Cancel by ID
```
- Default time when omitted: **12:00** (noon) in configured timezone
- Timezone: `bot.timezone` in config, default `UTC`
- Leap day (02-29): fires on Feb 28 in non-leap years
- Past dates for `at` are rejected
- Calendar reminders survive restarts; duration-based do not
## Reconnect Backoff
On connection loss, the bot reconnects with exponential backoff and jitter: