docs: document keyword alert subscription plugin
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -53,12 +53,15 @@ format = "json" # JSONL output (default: "text")
|
|||||||
## Container
|
## Container
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make build # Build image
|
make build # Build image (only for dep changes)
|
||||||
make up # Start (podman-compose)
|
make up # Start (podman-compose)
|
||||||
make down # Stop
|
make down # Stop
|
||||||
make logs # Follow logs
|
make logs # Follow logs
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Code, plugins, config, and data are bind-mounted. No rebuild needed for
|
||||||
|
code changes -- restart the container or use `!reload` for plugins.
|
||||||
|
|
||||||
## Bot Commands
|
## Bot Commands
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -329,6 +332,21 @@ Names: lowercase alphanumeric + hyphens, 1-20 chars. Max 20 streamers/channel.
|
|||||||
Polls every 2min. Announces offline->live transitions. Persists across restarts.
|
Polls every 2min. Announces offline->live transitions. Persists across restarts.
|
||||||
No API credentials needed (uses public GQL endpoint).
|
No API credentials needed (uses public GQL endpoint).
|
||||||
|
|
||||||
|
## Alert
|
||||||
|
|
||||||
|
```
|
||||||
|
!alert add <name> <keyword...> # Add keyword alert (admin)
|
||||||
|
!alert del <name> # Remove alert (admin)
|
||||||
|
!alert list # List alerts
|
||||||
|
!alert check <name> # Force-poll now
|
||||||
|
```
|
||||||
|
|
||||||
|
Searches keywords across YouTube (InnerTube) and Twitch (GQL) simultaneously.
|
||||||
|
Names: lowercase alphanumeric + hyphens, 1-20 chars. Keywords: 1-100 chars.
|
||||||
|
Max 20 alerts/channel. Polls every 5min. Max 5 announcements per platform per cycle.
|
||||||
|
Format: `[name/yt] Title -- URL` or `[name/tw] Title -- URL`.
|
||||||
|
No API credentials needed. Persists across restarts.
|
||||||
|
|
||||||
## Plugin Template
|
## Plugin Template
|
||||||
|
|
||||||
```python
|
```python
|
||||||
|
|||||||
@@ -629,3 +629,41 @@ Polling and announcements:
|
|||||||
- Subscriptions persist across bot restarts via `bot.state`
|
- Subscriptions persist across bot restarts via `bot.state`
|
||||||
- `list` shows live/error status indicators next to each streamer
|
- `list` shows live/error status indicators next to each streamer
|
||||||
- `check` forces an immediate poll and reports current status
|
- `check` forces an immediate poll and reports current status
|
||||||
|
|
||||||
|
### `!alert` -- Keyword Alert Subscriptions
|
||||||
|
|
||||||
|
Search keywords across multiple platforms (YouTube, Twitch) and announce new
|
||||||
|
results. Unlike `!rss`/`!yt`/`!twitch` which follow specific channels/feeds,
|
||||||
|
`!alert` searches keywords across all supported platforms simultaneously.
|
||||||
|
|
||||||
|
```
|
||||||
|
!alert add <name> <keyword...> Add keyword alert (admin)
|
||||||
|
!alert del <name> Remove alert (admin)
|
||||||
|
!alert list List alerts
|
||||||
|
!alert check <name> Force-poll now
|
||||||
|
```
|
||||||
|
|
||||||
|
- `add` and `del` require admin privileges
|
||||||
|
- All subcommands must be used in a channel (not PM)
|
||||||
|
- Name is required as the first argument after `add`; everything after is the keyword
|
||||||
|
- Names must be lowercase alphanumeric + hyphens, 1-20 characters
|
||||||
|
- Keywords: 1-100 characters, free-form text
|
||||||
|
- Maximum 20 alerts per IRC channel
|
||||||
|
|
||||||
|
Platforms searched:
|
||||||
|
|
||||||
|
- **YouTube** -- InnerTube search API (no auth required)
|
||||||
|
- **Twitch** -- Public GQL endpoint: live streams and VODs (no auth required)
|
||||||
|
|
||||||
|
Polling and announcements:
|
||||||
|
|
||||||
|
- Alerts are polled every 5 minutes by default
|
||||||
|
- On `add`, existing results are recorded without announcing (prevents flood)
|
||||||
|
- New results announced as `[name/yt] Title -- URL` or `[name/tw] Title -- URL`
|
||||||
|
- Maximum 5 items announced per platform per poll; excess shown as `... and N more`
|
||||||
|
- Titles are truncated to 80 characters
|
||||||
|
- Each platform maintains its own seen list (capped at 200 per platform)
|
||||||
|
- 5 consecutive errors doubles the poll interval (max 1 hour)
|
||||||
|
- Subscriptions persist across bot restarts via `bot.state`
|
||||||
|
- `list` shows error status indicators next to each alert
|
||||||
|
- `check` forces an immediate poll across all platforms
|
||||||
|
|||||||
Reference in New Issue
Block a user