5.7 KiB
Channel & user modes
This is the full mode set echoIRCd advertises. The authoritative ISUPPORT string is:
PREFIX=(qaohv)~&@%+ CHANMODES=beIgXw,k,lfjFLHBJdK,ACDGMNOPQRSTUcimnpstuz
EXTBAN=,Gbcgjmnrsy
CHANMODES groups modes into four types: A = list modes (always take a mask),
B = always take a parameter, C = take a parameter only when set, D =
flags with no parameter.
Channel status (prefix) modes
Granted to members; each has a name prefix shown before the nick.
| Mode | Prefix | Rank | Meaning |
|---|---|---|---|
+q |
~ |
owner | Channel owner — full control. |
+a |
& |
admin | Protected/admin — like op, can't be kicked/deopped by ops. |
+o |
@ |
op | Channel operator. |
+h |
% |
halfop | Half-operator — a reduced op. |
+v |
+ |
voice | May speak when the channel is +m. |
Network staff (IRC operators) can additionally carry a ! prefix (mode y) via
operprefix, which ranks above owner.
List modes (type A)
Take a mask and maintain a list; MODE #chan +b with no argument lists entries.
| Mode | Name | Meaning |
|---|---|---|
+b |
ban | Ban a nick!user@host mask (accepts extbans). |
+e |
ban exempt | A mask exempt from +b. |
+I |
invite exempt | A mask that may join a +i channel without an invite. |
+g |
filter | Block matching users from speaking (a channel-scoped mute list). |
+X |
exempt-chanops | Masks whose members bypass selected restrictions. |
+w |
auto-status | +w <prefix>:<hostmask> grants a status prefix on join, e.g. +w o:*!*@trusted.host (auto-op), +w v:*!*@*.friend.net (auto-voice). |
Parameter modes
Type B — always a parameter:
| Mode | Meaning |
|---|---|
+k <key> |
Channel key; must be supplied to join. |
Type C — a parameter only when setting:
| Mode | Meaning |
|---|---|
+l <n> |
Member limit. |
+f [*]<lines>:<secs> |
Message flood: kick past lines messages in secs; a leading * also bans. |
+j <count>:<secs> |
Join flood throttle. |
+F <count>:<secs> |
Nick-change flood throttle. |
+L <#target> |
Redirect joiners here when the channel is full/keyed/invite-only. |
+H <lines>:<secs> |
Replay recent messages to joiners (in-channel history). |
+B <percent> |
Anti-caps: block messages that are more than percent uppercase. |
+J <secs> |
Block rejoin for secs after a kick. |
+d <secs> |
New joiners can't speak for secs. |
+K <n> |
Block a line repeated within a member's last n messages. |
Flag modes (type D)
No parameter.
| Mode | Meaning | Mode | Meaning | |
|---|---|---|---|---|
+i |
invite-only | +S |
strip formatting/colour | |
+m |
moderated (only +ov speak) |
+R |
registered users only may join | |
+n |
no external messages | +M |
only registered users may speak | |
+p |
private (hidden from WHOIS) | +G |
censor configured bad words | |
+s |
secret | +u |
auditorium (hide non-ops) | |
+t |
only ops set the topic | +Q |
KICK disabled | |
+z |
TLS-only join | +A |
any member may INVITE | |
+O |
opers only may join | +P |
permanent (survives 0 members) | |
+N |
no nick changes while joined | +U |
op-moderated (unprivileged msgs go to ops) | |
+C |
block CTCP | +D |
delay-join (hide JOIN until they speak) | |
+T |
block NOTICEs | +c |
reject formatting/colour |
Channel modes can also be set or queried by long name with the PROP command
(e.g. PROP #chan moderated=on).
User modes
| Mode | Meaning |
|---|---|
+i |
invisible (hidden from WHO / global WHOIS channel list) |
+w |
receive WALLOPS |
+o |
IRC operator (set only via OPER) |
+x |
cloaked host (keyed masking; usually auto-set on connect) |
+r |
logged into an account (server-set; can't be self-applied) |
+z |
only accept private messages from TLS-connected users |
+B |
flagged as a bot |
+D |
deaf — ignore channel messages |
+I |
hide your channel list in WHOIS |
+H |
hide your oper status |
+R |
block private messages from users not logged into an account |
+g |
caller-id — only people you ACCEPT may message you |
+W |
be notified when someone WHOISes you |
+c |
block private messages from users with no common channel |
+h |
available for help (helpop; oper-settable) |
+s |
server-notice mask — see snomasks |
Extbans
Extended bans extend any ban-style list (+b, +e, +I, +g, …) beyond plain
host masks. EXTBAN=,Gbcgjmnrsy — there is no prefix character; a ban simply
starts with the extban letter and a colon.
Matching extbans — match a user by something other than host, usable with any list mode:
| Extban | Matches |
|---|---|
g:<name> |
members of a named security group. |
y:<score> |
reputation score, e.g. y:<100 (below 100), y:>500. |
r:<mask> |
real name (GECOS). |
j:<#chan> |
users who are also in #chan. |
s:<mask> |
the server a user is on. |
G:<cc> |
GeoIP country code, e.g. G:CN,RU. |
b:<#chan> |
anyone banned in #chan (shares a ban list between channels). |
Acting extbans — change what matched users can do rather than blocking them
outright (used with +b):
| Extban | Effect on matched users |
|---|---|
m:<mask> |
muted — can't speak (but stay joined). |
c:<mask> |
can't send formatting/colour. |
n:<mask> |
can't change nick. |
Example — quarantine everyone from a bad network to read-only, and bounce a spammer to another channel:
/MODE #main +b m:*!*@*.spammer.net
/MODE #main +b *!*@*.badhost$#quarantine