docs: update docs for calendar reminders
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1
TASKS.md
1
TASKS.md
@@ -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) |
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user