]> jfr.im git - irc/freenode/web-7.0.git/blobdiff - content/kb/using/channelmodes.md
Stick to using TLS unless referring to a specific client (#460)
[irc/freenode/web-7.0.git] / content / kb / using / channelmodes.md
index 6294507263d970e9abeac07c4cfa304154fcb033..d2a688069426daf1391e310d5f54835ea36ec33f 100644 (file)
@@ -1,44 +1,46 @@
-Title: Channel modes
+Title: Channel Modes
 ---
-There are various modes that can be set on channels.
-You can list current channel modes with the `/mode #channel` command.
-Use `/msg chanserv info #channel` to see modes [set with MLOCK](kb/using/chanserv_overview)
 
-### Setting channel modes
-Most channel modes require you to be opped (+o) in the channel in question to modify them.
-You can not override modes [set with MLOCK](kb/using/chanserv_overview) with the /mode command.
+Various modes can be set on channels. Use `/mode #channel` to list current
+channel modes and `/msg chanserv info #channel` to list modes set with MLOCK.
 
-For those that you can set, `/mode #channel +mode` will work. 
-Most modes should also be explained by the built in help of our network, use `/help cmode`  or `/quote help cmode` if your client does not pass through `/help`.
+All channel modes will be lost when a channel becomes empty. Enable GUARD to
+preserve modes.
 
-Keep in mind that all channel modes are lost when a channel becomes empty, so consider enabling the GUARD setting of [ChanServ](kb/using/chanserv_overview) in your channel to avoid that.
-
-### Available channel modes
-The following user modes are available:
+To set a mode, use `/mode #channel +(mode)` replacing `(mode)` with the letter that corresponds to the mode. 
+To unset a mode, use `/mode #channel -(mode)` 
 
+# Available channel modes
 | Mode (name) | Description |
 | ----------- | ----------- |
-| b<br>(channel ban) | Bans are used to prevent users from joining a channel. Sending `/mode #channel +b` alone will return a list of bans and can be seen by any user. Actually setting bans is restricted to channel operators. Users matching bans are unable to join the channel unless they are exempt (see below). If the banned user is already in the channel, they will be prevented from speaking and from changing nicks in there, unless voiced (+v). Often users are removed with the `/kick` or `/remove` command after a ban is set.<br>On freenode, bans can take one of two main forms. The most common form is `+b nick!user@host`. The wildcards * and ? are allowed, matching zero-or-more and exactly-one characters, respectively. Bans set on IP addresses will apply even if the affected user joins with a resolved or cloaked hostname. CIDR is supported in bans, like *!*@10.0.0.0/8. This is most useful with IPv6.<br>The second form is described on the [Extbans](kb/using/extbans) page and can be used for bans based on user data or to forward banned users to a different channel.  |
-| c<br>(colour filter) | This mode activates the colour filter for the channel. This filters out bold, underline, reverse video, beeps, mIRC colour codes, and ANSI escapes. Note that this is a filter, so enabling the mode disables colours and the likes.  |
-| C<br>(block CTCPS) | This mode blocks the sending of CTCP commands (other than `/me` actions) to whole channels. |
-| e<br>(ban exemption) | This mode takes one parameter, just like ban (above). Wildcards and [extbans](kb/using/extbans) can be used, like ban. Ban exemption matches override +b and +q bans for all clients it matches, allowing the exempted user to join/speak as if they were not banned or quieted. This can be useful if it is necessary to ban an entire ISP due to persistent abuse, but some users from that ISP should still be allowed in. For example: `/mode #channel +bee *!*@*.example.com *!*someuser@host3.example.com $a:JohnDoe` would block all users from example.com, while still allowing someuser from host3 and JohnDoe to join.
-| f<br>(forward on uninvited) | This mode takes one parameter, a channel name. Users who cannot join the channel (because of +i, +j, +r, see below) are instead sent to the channel given in +f. The most common example would be something like `/mode #channel1 +if #channel2`, which would cause any users trying to join #channel1 and who are not in the invite-only exemption list (+I, see below) to be sent to #channel2 instead. Clients receive a 470 numeric message which lists the original and the target channels.<br>An operator can only set mode +f #channel2 if they are an op in #channel2 or if #channel2 has mode +F set (see below).<br>Usually you want to set forwards with [MLOCK](kb/using/chanserv_overview), because the channel will become empty over time and the channel modes are lost. You might also want to set [ChanServ's GUARD](kb/using/chanserv_overview) to prevent the channel from becoming empty. An operator can only use [ChanServ's MLOCK feature](kb/using/chanserv_overview) with +f if they have access flag +s in both channels, or if the channel to be forwarded to is +F and they have +s in the original channel. |
-| F<br>(enable forwarding) | This mode can be set by any channel operator to allow operators in other channels to set bans to forward clients to their channel, without requiring ops in it (see +b above). |
-| g<br>(allow anybody to invite) | With this mode set, anybody in the channel is allowed to invite others (using the `/invite` command) to the channel. If this mode is not set, invitations may only be sent by channel operators. Keep in mind that with this mode set, any client in the channel can affect who can join around restrictive modes such as +i, +j, +l or +r. |
-| i<br>(invite-only) | No client can join this channel unless they are listed in the invite exemption list (+I) or are invited by someone through the `/invite` or `/msg ChanServ INVITE #channel` command. |
-| I<br>(invite-only exemption) | This mode takes one parameter of the same form as bans. [Extbans](kb/using/extbans) are supported and common, e.g. for setting an exemption for a specific registered user. Matching clients do not need to be invited to join the channel when it is invite-only (+i). Unlike the `/invite` command, this does not override +j, +l and +r. Only channel operators can see +I changes or see the list with `/mode #channel +I`. |
-| j<br>(join throttling) | This mode takes one parameter of the form n:t, where n and t are positive integers. Only n users may join in each period of t seconds, so with e.g. 3:10 only 3 users could join within 10 seconds. Invited users can join regardless of +j, but are counted as normal. You can use this mode to prevent bot attacks. Observe the average join rate of your channel and pick a good value for +j. If you also use +f (see above), you can forward users who are throttled to another channel like ##overflow.
-| k<br>(channel password) | This mode sets up the channel password given as a parameter. To enter the channel, you must specify the password on your `/join` command. Keep in mind, modes locked with ChanServ's MLOCK command can be seen by anyone recreating the channel; this includes keys. Also keep in mind that users being on the channel when +k is set will see the key as well.  |
-| l<br>(join limit) | Specified with a numeric value, this mode limits the number of users who can be in your channel at the same time.  |
-| L<br>(large ban/exempt/invex lists) | This mode, which can only be set by freenode staff, allows a channel to have longer than normal ban, exempt, and invite exemption lists. Note that this is usually not needed and thus not handed out. Well maintained lists with old and unneeded entries removed rarely ever surpass the maximal list size.  |
-| m<br>(moderated) | When a channel is set +m, only users who are opped (+o) or voiced (+v) on the channel can send to it. This mode does not prevent users without voice or op from changing nicks. |
-| n<br>(prevent external send) | Users outside the channel may not send messages to it.  |
-| p<br>(paranoid) | When set, the KNOCK command cannot be used on the channel to request an invite, and users will not be shown the channel in whois replies unless they are on it. Unlike on some ircds, +p and +s can be set together.  |
-| P<br>(permanent channel) | This mode may only be set by freenode staff. Once set, the channel will not be deleted when it becomes empty. Keep in mind that permanent channels can still be erased by catastrophic network failures. This mode is rarely handed out, you probably don't need to request it. Enable [ChanServ's GUARD](kb/using/chanserv_overview) setting to keep a channel from becoming empty.  |
-| q<br>(quiet user) | This mode works like +b (ban user), but instead simply quiets the user. The user can join, but cannot speak in the channel or change nicks whilst in the channel. We encourage channels to use quiets in place of bans wherever possible. The list of quiets is separate from the list of bans and can be viewed using `/mode #channel +q`. This mode also supports [extbans](kb/using/extbans), e.g. `/mode #channel +q $~a` can be used to prevent unregistered users from speaking in channel while allowing them to join.  |
-| Q<br>(block forwarded users) | Users will not be able to be forwarded (see +f above) to a channel with +Q. |
-| r<br>(block unidentified)|This mode prevents users who are not identified to NickServ from joining the channel. Users will receive a server notice explaining this if they try to join. See +q (quiet) above for an alternative which lets unregistered users join but not speak in your channel.  |
-| s<br>(secret channel) | This channel will not appear on channel lists or WHO or WHOIS output unless you are on it. |
-| S<br>(SSL-only) | Only users connected via SSL may join the channel while this mode is set. Users already in the channel are not affected. Keep in mind that this also blocks all webchat users, as they are not marked as connected via SSL. |
-| t<br>(only ops can change topic) | When +t is set, only channel operators may modify the topic of the channel. This mode is recommended in larger, more public channels to protect the integrity of the topic. |
-| z<br>(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 channel operators (+o). This is intended for use in moderated debates. |
+| b<br>(channel ban) | Prevent users from joining or speaking. Sending `/mode #channel +b` alone will return the current ban list. While on the channel, banned users will be unable to send to the channel or change nick.<br>The most common form for a ban is `+b nick!user@host`. The wildcards * and ? are allowed, matching zero-or-more and exactly-one characters, respectively. Bans set on IP addresses will apply even if the affected user joins with a resolved or cloaked hostname. [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation) is supported in bans.<br>The [second form](kb/using/extbans) can be used for bans based on user data. You can append `$#channel` to any ban to redirect banned users to another channel. |
+| c<br>(colour filter) | Strip colour and formatting codes from channel messages. |
+| C<br>(block CTCPs) | Blocks CTCP commands (other than `/me` actions). |
+| e<br>(ban exemption) | Takes one parameter, just like ban (above). Wildcards and [extbans](kb/using/extbans) can be used, like ban. Ban exemption matches override +b and +q bans for all clients it matches, allowing the exempted user to join/speak as if they were not banned or quieted. This can be useful if it is necessary to ban an entire ISP due to persistent abuse, but some users from that ISP should still be allowed in. For example: `/mode #channel +bee *!*@*.example.com *!*someuser@host3.example.com $a:JohnDoe` would block all users from example.com, while still allowing someuser from host3 and JohnDoe to join.
+| f<br>(forward) | Takes a channel name as a parameter. Users who cannot join the channel (because of +i, +j, +r, see below) are instead sent to the given channel. Clients are notified when the forward takes effect.<br>An operator can set mode +f #channel2 only if they are an op in #channel2 or if #channel2 has mode +F set (see below).<br>Usually you want to set forwards with MLOCK, because the channel will become empty over time and the channel modes are lost. You might also want to set GUARD to prevent the channel from becoming empty. An operator can use MLOCK with +f only if they have access flag +s in both channels, or if the channel to be forwarded to is +F and they have +s in the original channel. |
+| F<br>(enable forwarding) | Allow operators in other channels to forward clients to this channel, without requiring ops in the target channel. |
+| g<br>(free invite) | Anybody in the channel may invite others (using the `/invite` command) to the channel. |
+| i<br>(invite only) | Users are unable to join invite-only channels unless they are invited or match a +I entry. |
+| I<br>(invite exemption) | Takes a ban parameter. [Extbans](kb/using/extbans) are supported and common, e.g. for setting an exemption for a specific registered user. Matching clients do not need to be invited to join the channel when it is invite-only (+i). Unlike the `/invite` command, this does not override +j, +l and +r. Only channel operators can see +I changes or see the list with `/mode #channel +I`. |
+| j<br>(join throttle) | This mode takes one parameter of the form n:t, where n and t are positive integers. Only n users may join in each period of t seconds, so with e.g. 3:10 only 3 users could join within 10 seconds. Invited users can join regardless of +j, but are counted as normal. You can use this mode to prevent bot attacks. Observe the average join rate of your channel and pick a good value for +j. This mode could be combined with +f to forward throttled users to an overflow channel. |
+| k<br>(password) | To enter the channel, you must specify the password on your `/join` command. Keep in mind that modes locked with ChanServ's MLOCK command can be seen by anyone recreating the channel; this includes keys. Also keep in mind that users being on the channel when +k is set will see the key as well. |
+| l<br>(join limit) | Takes a positive integer parameter. Limits the number of users who can be in the channel at the same time. |
+| m<br>(moderated) | Only opped and voiced users can send to the channel. This mode does not prevent users from changing nicks. |
+| n<br>(prevent external send) | Users outside the channel may not send messages to it. Keep in mind that bans and quiets will not apply to external users. |
+| p<br>(private) | The KNOCK command cannot be used on the channel, and users will not be shown the channel in whois output unless they share the channel with the requestor. The channel will still appear in channel lists and WHO output (set channel mode +s if this is not desired).|
+| q<br>(quiet) | Works like +b (ban user), but allows matching users to join the channel. |
+| Q<br>(block forwarded users) | Users cannot be forwarded (see +f above) to a channel with +Q. |
+| r<br>(block unidentified) | Prevents users who are not identified to services from joining the channel. |
+| s<br>(secret) | This channel will not appear on channel lists or WHO or WHOIS output unless you are on it. |
+| S<br>(TLS-only) | Only users connected via TLS may join the channel while this mode is set. Users already in the channel are not affected. Keep in mind that this also blocks all webchat users, as they are not marked as connected via TLS. |
+| t<br>(ops topic) | Only channel operators may set the channel topic. |
+| u<br>(unfiltered) | Receive messages that are filtered server side by freenode based on content, usually spam. Set +u if you want the channel to receive these messages. Also see the corresponding user mode. |
+| z<br>(reduced moderation) | 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 channel operators (+o). |
+
+# Restricted channel modes
+The following channel modes can only be added by freenode staff.
+
+| Mode (Name)        | Description                               |
+|--------------------|-------------------------------------------|
+| L (Large Ban List) | Increase maximum number of +beIq entries. |
+| P (Permanent)      | Channel does not disappear when empty.    |