config: bridge-owned Discord user IDs excluded from ghosting, capture and lifecycle counting #141
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
nether/nether-voicebridge#141
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Add a per-bridge (or per-guild) config list of Discord user IDs that the bridge treats as bridge-owned: never ghosted, never captured, and never counted as a human for lifecycle.
Why
/bridge optout(#63) already stops ghosting and capture for a user, but an opted-out user still appears in the channel'spresenceset, so they still count as a "human" for open/close decisions. Helper accounts that sit in a bridged voice channel alongside real users (utility bots that aren't part of the puppet pool, moderation helpers, recording accounts, etc.) therefore keep a bridge open after the last real human has left, until the helper leaves too.An operator-controlled exclusion list closes that: the listed IDs join the same excluded-identity set the puppet pool uses for echo/loop prevention (CLAUDE.md constraint 5) and are skipped by presence tracking.
Scope
excluded_user_ids: Vec<u64>on the Discord side of a bridge, validated (non-zero, deduped).presencemaintenance inpuppet.rsskips listed IDs (same place pool bots are skipped).is_opted_outis consulted (or the list is folded into the opt-out set at startup, read-only).Operator-only config, no runtime command needed for v1.