website/content/docs/channel-modes.md

84 lines
4 KiB
Markdown

# Channel modes
Set with `MODE <#channel> +<mode> [param]`. Modes are grouped by the four CHANMODES types the server
advertises in ISUPPORT: **A** (list modes, always take a parameter), **B** (always take a parameter),
**C** (parameter only when set), **D** (flag, no parameter). Membership **prefixes** are listed at
the end.
## Type A — list modes
Each takes a parameter; using it with no parameter queries the list.
| Mode | Name | Description |
| --- | --- | --- |
| `b` | ban | Ban a matching `nick!user@host` or [extban](/docs/extbans) from the channel |
| `e` | ban exception | Exempt a matching mask from bans |
| `I` | invite exception | A matching mask may join a `+i` channel without an invite |
| `g` | spamfilter | Per-channel message word/glob filters (matches message text) |
| `X` | exemptchanops | `<restriction>:<rankchar>` — exempt members at/above a rank from a named restriction |
| `w` | autoop | `<prefixchar>:<hostmask>` — auto-grant a status prefix on join |
## Type B — always take a parameter
| Mode | Name | Description |
| --- | --- | --- |
| `k` | key | Channel password required to join |
## Type C — parameter only when set
| Mode | Name | Param | Description |
| --- | --- | --- | --- |
| `l` | limit | `<n>` | Maximum member count |
| `f` | message flood | `[*]<lines>:<secs>` | Kick a user exceeding the rate; leading `*` also bans |
| `j` | join flood | `<joins>:<secs>` | Lock new joins for 60s after the threshold |
| `F` | nick flood | `<changes>:<secs>` | Block nick changes for 60s after the threshold |
| `L` | redirect | `<#target>` | Send joiners to another channel when `+l`-full |
| `H` | history | `<lines>[:<secs>]` | Replay recent messages to joiners |
| `B` | anticaps | `<1..100>` | Reject messages that are ≥ this % uppercase (ops exempt) |
| `J` | kicknorejoin | `<secs>` | Block rejoin for N seconds after a kick |
| `d` | delaymsg | `<secs>` | New members can't speak for N seconds (voiced+ exempt) |
| `K` | norepeat | `<n>` | Block a message identical to one of the sender's previous N lines |
## Type D — flag modes
| Mode | Name | Description |
| --- | --- | --- |
| `A` | allowinvite | Any member may use `INVITE` |
| `C` | noctcp | Block CTCPs to the channel |
| `D` | delayjoin | Hide joining members until they speak or gain a prefix |
| `G` | censor | Apply the network word censor to messages |
| `M` | regmoderated | Only registered (logged-in) users may speak |
| `N` | nonick | Block nick changes by members while in the channel |
| `O` | operonly | Only IRC operators may join (oper-set) |
| `P` | permanent | Channel persists with no members (oper-set) |
| `Q` | nokicks | Block `KICK` in the channel |
| `R` | regonly | Only registered users may join |
| `S` | stripcolor | Strip mIRC colour/formatting from messages |
| `T` | nonotice | Block `NOTICE`s to the channel |
| `U` | opmoderated | Messages from unprivileged users go only to ops |
| `c` | nocolor | Block messages containing colour/formatting |
| `i` | inviteonly | Require an invite (or `+I` match) to join |
| `m` | moderated | Only voiced+ may speak |
| `n` | noexternal | Block messages from users not in the channel |
| `p` | private | Private channel |
| `r` | registered | Registered channel — set only by services |
| `s` | secret | Secret channel (hidden from LIST/WHOIS) |
| `t` | topiclock | Only ops may change the topic |
| `z` | secureonly | Only TLS users may join (settable only when all members are on TLS) |
## Prefix / status modes
Take a nick parameter; ordered high → low rank. Sigils and the ranks required to grant/revoke are
configurable via `customprefix`.
| Mode | Prefix | Name | Rank |
| --- | --- | --- | --- |
| `y` | `!` | oper prefix (network staff) | 60 |
| `q` | `~` | owner / founder | 50 |
| `a` | `&` | admin / protected | 40 |
| `o` | `@` | op | 30 |
| `h` | `%` | halfop | 20 |
| `v` | `+` | voice | 10 |
The `!` oper prefix only exists when `operprefix` or `ojoin` is enabled. Granting or removing a prefix
requires out-ranking both the configured set/unset rank and the target's current top rank.