Chapter 3. Cmodes

3.1. Meanings of cmodes

3.1.1. +b, channel ban

Bans take one parameter, either in the form +b nick!user@host, or +b nick!user@host!#channel. The wildcards * and ? are allowed, matching zero-or-more, and exactly-one characters respectively. The masks will be trimmed to fit the maximum allowable length for the relevant element, with wildcards added as appropriate to ensure that they still match.

In the simple case, without a !#channel, the mask causes any matching user to be prohibited from sending to the channel, knocking, or joining. Having +v set on them on the channel overrides the prohibition on sending, while being invited overrides the prohibition on joining.

If the mask has a channel name specified, then in all situations where the user would previously have been told they could not join the channel, they will instead join the channel named in the ban mask, and be sent a 379 numeric describing that.

3.1.2. +c, colour filter

This cmode activates the colour filter for the channel. This filters out bold, underline, reverse video, beeps, mIRC colour codes, and ANSI escapes. Note that escape sequences will usually leave cruft sent to the channel, just without the escape characters themselves.

3.1.3. +d, gecos ban

This mode takes on parameter, a mask which is matched against the so-called "Real name" field each client supplies, and prevents any matching clients from sending to the channel or joining it. It accepts the standard * and ? wildcards.

3.1.4. +D, automatic D:line

This mode takes one parameter of the form "x,y", where x and y are positive integers. These two integers monitor the rate at which users may join the channel. The limit is roughly y users every x*y seconds, but the algorithm allows for bursts. If this limit is exceeded, a D:line is placed on the IP-address of every user in the channel at the time.

More precisely, a counter is maintained which is incremented by one for every user that successfully joins the channel, and decremented by one every x seconds. When a user joins and the counter is greater than limit (after incrementing), the channel is cleared out.

3.1.5. +e, ban exemption

This mode takes on parameter of the form nick!user@host, with the usual wildcards, which overrides +b and +d bans for all clients it matches.

3.1.6. +f, channel forwarding

This mode takes one parameter, the name of a channel (+f #channel). If the channel also has the +i cmode set, and somebody attempts to join without either being expliticly invited, or having an invex (+I), then they will instead join the channel named in the mode parameter. The client will also be sent a 379 numeric giving the original and target channels.

Users are similarly forwarded if the +J cmode is set and their attempt to join is throttled, or if +r is set and they are not identified.

3.1.7. +g, allow anybody to invite

When this mode is set, anybody may use the INVITE command on the channel in question. When it is unset, only channel operators may use the INVITE command.

3.1.8. +g, allow anybody to invite

When this mode is set, anybody may use the INVITE command on the channel in question. When it is unset, only channel operators may use the INVITE command.

3.1.9. +i, invite only

When this cmode is set, no client can join the channel unless they have an invex (+I) or are explicitly invited.

3.1.10. +I, invite exception (invex)

This mode takes a parameter of the form nick!user@host with the usual wildcards. Matching clients do not need to be invited to join the channel when it is invite-only.

3.1.11. +j, jupe channel

This cmode can only be set by network operators. It basically prohibits the channel from being used for any purpose, anywhere on the network. Joining such channels is not possible.

3.1.12. +J, join throttling

This mode takes one parameter of the form "x,y", where x and y are positive integers. These two integers control the rate at which users may join the channel. The limit is roughly y users every x*y seconds, but the algorithm allows for bursts.

More precisely, a counter is maintained which is incremented by one for every user that successfully joins the channel, and decremented by one every x seconds. When the counter is equal to limit, no more users may join.

3.1.13. +k, key (channel password)

Taking one parameter, when set, this mode requires a user to supply the key in order to join the channel.

3.1.14. +l, channel member limit

Takes one numeric parameter, the number of users which are allowed to be in the channel before further joins are blocked.

3.1.15. +m, moderated

When a channel is set +m, only users with +o or +v on the channel can send to it.

3.1.16. +n, prevent external send to channel

When set, this mode prevents users from sending to the channel without being in it themselves.

3.1.17. +P, permanent channel

Channels with this mode (which is accessible only to network admins) set will not be destroyed when the last user leaves. They will also be allowed much larger banlists.

3.1.18. +q, quiet

This mode behaves exactly like the simple form of +b (ban), except that the user may still join the channel. The net effect is that they cannot send to the channel.

3.1.19. +Q, block forwarded users

Channels with this mode set are not valid targets for forwarding. Any attempt to forward to this channel will be ignored, and the user will be handled as if the attempt was ever made (by sending them the relevant error message).

3.1.20. +r, block unidentified

When set, this mode prevents unidentified users from joining.

3.1.21. +R, quiet unidentified

When set, this mode prevents unidentified users from sending to the channel, although they can still join.

3.1.22. +s, secret channel

When set, this mode prevents the channel from appearing in the output of the LIST command.

3.1.23. +z, reduced moderation

When +z is set, the effects of +b, +q, and +m are relaxed. For each message, if that message would normally be blocked by one of these modes, it is instead sent to all the users who are currently set +o. This is intended for use in moderated debates.

Note that +n is unaffected by this. To silence a given user completely, remove them from the channel.