diff --git a/docs/configuration.md b/docs/configuration.md index f98b47f..043df4f 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -79,7 +79,7 @@ translation catalog is absent. - **`channel_keywords`** – Optional. When set (comma-separated command/keyword names), only those triggers are answered **in channels**; DMs always get all triggers. Use this to reduce channel traffic by making heavy triggers (e.g. `wx`, `satpass`, `joke`) DM-only. Leave empty or omit to allow all triggers in monitored channels. Per-command **`channels = `** (empty) in a command’s section also forces that command to be DM-only; see `config.ini.example` for examples (e.g. `[Joke_Command]`). - **`max_response_hops`** - Default: 64 (code fallback); 7 in the shipped config templates. The bot will ignore messages that have traveled more than this number of hops. A value at or below 10 is recommended — in most meshes, anything higher is almost never an intentional message meant to trigger this bot, so lowering it keeps the bot from amplifying long flood traffic (#161). - **`outgoing_flood_scope_override`** – Optional. Fixed regional scope for outbound channel sends when no per-message scope is passed to `send_channel_message`. When **not set** (default), replies use **`reply_scope`** from inbound TC_FLOOD correlation (auto-mirror). When **set** (e.g. `#west`), that scope is used for proactive sends (webhooks, scheduled messages, feeds) and whenever `reply_scope` is unset. It does **not** override an explicit `reply_scope` on a reply. Unscoped FLOOD uses global flood unless this override or `reply_scope` applies. -- **`flood_scopes`** – Optional. Comma-separated list of named scopes the bot will **accept and reply to**. When set, this acts as an allowlist: only TC_FLOOD messages matching one of these scopes receive a reply, and the reply is sent using the same scope as the incoming message (auto-mirror via `reply_scope`). Regular (unscoped) FLOOD messages are blocked unless `*` is included in the list. Leave empty or omit to accept all messages regardless of scope. **Auto-mirror requires correct RF correlation** (TC_FLOOD / GRP_TXT in the RF cache); if correlation fails, the bot will not use a stale ADVERT or other packet for scope and may ignore the message when `*` is not listed. +- **`flood_scopes`** – Optional. Comma-separated list of named scopes the bot will **accept and reply to**. When set, this acts as an allowlist: only TC_FLOOD messages matching one of these scopes receive a reply, and the reply is sent using the same scope as the incoming message (auto-mirror via `reply_scope`). Regular (unscoped) FLOOD messages are blocked unless `*` is included in the list. Leave empty or omit to accept all messages regardless of scope; replies then go out as ordinary global FLOOD and do not mirror the sender's region. Mirroring needs the region name listed (for example `*,#home`). The `*` entry keeps unscoped flood allowed. The bot matches the inbound transport code by HMAC against those names and cannot recover a region name from the 16-bit code alone. **Auto-mirror requires correct RF correlation** (TC_FLOOD / GRP_TXT in the RF cache); if correlation fails, the bot will not use a stale ADVERT or other packet for scope and may ignore the message when `*` is not listed. ### outgoing_flood_scope_override vs flood_scopes diff --git a/docs/web-viewer.md b/docs/web-viewer.md index 5b326c0..6b3e8ee 100644 --- a/docs/web-viewer.md +++ b/docs/web-viewer.md @@ -310,10 +310,13 @@ window; older days stay frozen at the value recorded then. from or written to the radio. This is a different setting from the radio's Default Region Scope above: this one decides what the bot sends and answers, that one is the radio's fallback for anything the bot leaves unscoped - - *Which scopes the bot replies to*: `flood_scopes`. Either "reply whatever - the scope" (the key is left empty, which is also the default) or an - allowlist of named regions, optionally including unscoped FLOOD via the - "also reply to unscoped messages" box, which is the `*` entry + - *Which scopes the bot replies to*: `flood_scopes`. Left empty (the default), + the bot still answers channel commands, but replies go out as ordinary + global FLOOD and do not mirror the sender's region. An allowlist of named + regions enables mirroring for those names (for example `*,#home`); the + "also reply to unscoped messages" box is the `*` entry that keeps unscoped + FLOOD allowed. The bot matches inbound transport codes by HMAC against + those names and cannot recover a region name from the 16-bit code alone - *Default outgoing scope*: `outgoing_flood_scope_override`, used for sends that carry no scope of their own (scheduled messages, feeds, webhooks) and for replies whose incoming scope could not be matched. Blank means global