From b38aac0bbc81924ea2447384a7519b1e504dff1b Mon Sep 17 00:00:00 2001 From: reverse Date: Sat, 18 Jul 2026 17:20:55 +0000 Subject: [PATCH] notify_exclude: document channel masks (all channels except one) --- Configuration.md | 4 ++-- Services.md | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Configuration.md b/Configuration.md index fda4ed9..b64af15 100644 --- a/Configuration.md +++ b/Configuration.md @@ -70,11 +70,11 @@ An audit channel for the incident feed. Notable actions are announced there; pri [log] channel = "#services" -`notify_exclude` is an optional list of masks whose users [OperServ NOTIFY](Services#operserv-network-operator-tools) never matches, so they cannot flood the feed. The classic case is PyLink relay clients — their nicks carry a `/network` suffix — so `"*/*"` silences every relayed user in one line. It accepts nick globs, `user@host`, or extbans (the same syntax as a NOTIFY mask), and is reloadable with `OperServ REHASH` (no restart). +`notify_exclude` is an optional list of masks [OperServ NOTIFY](Services#operserv-network-operator-tools) never announces, so they cannot flood the feed. It uses the same grammar as a watch mask: a `#channel` mask mutes that channel, and any other mask (nick glob, `user@host`, extban) mutes a user. The classic user case is PyLink relay clients — their nicks carry a `/network` suffix — so `"*/*"` silences every relayed user; a channel entry like `"#staff"` keeps a broad `#*` watch out of that channel. Reloadable with `OperServ REHASH` (no restart). [log] channel = "#services" - notify_exclude = ["*/*"] # ignore PyLink relay clients (nick/network) + notify_exclude = ["*/*", "#staff"] # relay clients, and never #staff ## [expire] diff --git a/Services.md b/Services.md index fa5453c..c7fa425 100644 --- a/Services.md +++ b/Services.md @@ -51,7 +51,11 @@ A deliberately broad mask like `#*` (every channel) or `*` (every user) is allow /msg OperServ REHASH -OperServ- Configuration reloaded from /etc/echo/config.toml. -Excluded users are skipped by *every* watch, so genuine locals still surface while the relay noise is gone. The list also accepts `user@host` and extbans, e.g. `["*/fun", "*!*@relay.example"]`. See [Configuration → [log]](Configuration#log). +Excluded masks are skipped by *every* watch, so genuine locals still surface while the relay noise is gone. The list uses the same grammar as a watch mask, so it excludes **users** (nick globs, `user@host`, extbans) **or channels**: a `#channel` mask mutes that channel. So "every join except #staff" is `#*` watched with `#staff` excluded: + + notify_exclude = ["*/*", "#staff"] # relay clients, and never #staff + +See [Configuration → [log]](Configuration#log). ## StatServ, statistics