Currently, Sigyn sets `mode +qz $~a` on `-en-help` when it raises it's defcon level. This causes problems because we either have to leave a permanent exemption in place for the web gateway, op all helpers, or disable this otherwise-useful feature.
Leaving a permanent exemption in place is nasty, because that prevents us from using bans/quiets on problematic helpers. Opping helpers is a bad idea, given the levels of trust that chanops needs, and not all helpers are considered trustworthy enough by all channel contacts and group contacts.
As such, #hmb is going to get a new feature to manage the exemption list itself.
---
We need:
* Detection of when an overly-restrictive mode is set
* Detection of the current status of the channel on join.
* Ability to op/deop self
* Ability to be overridden if necessary
---
On-join:
* Detect +r, override
* Detect +m, override with +qez $~a
* Detect +b or +q $~a, ensure +e is set
* Detect missing +z when +b or +q $~a is set
On mode change:
* If +b or +q $~a is set, op up, set +e
* If -b or -q $~a is unset, unset +e and deop
* If -e while +b/+q, warn, stay opped
* If +m or +r is set, override, educate (unless being set again within a minute of being set)
----
{F39045}