Wikipedia:IRC/Channel access and configuration guide

This page documents the basics for IRC users and channel managers and operators, mainly of non-public channels. It is geared towards 3 groups:


 * Users creating new IRC channels who need to know the basics of setting one up
 * Channel operators who need to know how to invite users to the channel
 * Users who need to know how to access the channel

It is assumed that basics such as accessing Libera Chat itself, registering an account on IRC, logging in (via IDENTIFY), joining channels, messaging other users, and so on, are understood. Note that other than flag and mode letters, all commands are case-insensitive.

How channels work
By default in IRC, user logins and channels only exist when actually in use. Once the user disconnects, or the channel is emptied, they are not saved, and simply cease to exist until someone attempts to use that name, or rejoin that channel (at which point they are re-created with "default" settings).

To allow some permanence, some servers operate what are known as "services" - in this case, NickServ which allows users to register and operate password-controlled user accounts on IRC, and ChanServ which allows channels to be owned by given users, and to manage the settings and user access of designated channels permanently. These are separate from (but tightly integrated into) IRC. They are contacted with the /msg command (not case-sensitive):

As well as the settings held permanently in services, users and channels have settings that are only held so long as the channel is occupied, and are lost if the channel fully empties. These include most notably, its "invite" list, and any "modes" or "topic" not set up as a default setting in ChanServ. If a channel ever fully empties, these may need to be re-entered.

Channel creation
Channels are created merely by joining them (if not already in use). The /msg ChanServ register #CHANNEL_NAME command is used to formally register a channel in a permanent manner and to allow default settings including access controls to be defined.

When you define a channel, you are listed as its founder, (flag = +F). As such you have ownership and control over the channel. if the channel is to be used long term, it is wise to grant others this flag +F as well, in case you become absent in future:
 * /msg ChanServ flags #CHANNEL_NAME USER_ACCOUNT +F
 * Eg: /msg ChanServ flags #wikimedia-stewards bastique +F

Keeping ChanServ in the channel
A channel loses its /mode settings, including any invite list, when it empties. To help prevent this, you may ask ChanServ itself to stay in the channel. If this is enabled, then the channel will only ever lose its /mode settings (including any invite list) on the rare occasions that all users and ChanServ all leave the channel, which will be much less likely since ChanServ usually operates 24/7 (apart from Services crashes or updates). This can be further mitigated by asking users with access to stay in the channel when services are likely to be "down".

The command /msg ChanServ set #CHANNEL_NAME guard on is used for this. It has no other practical effect beyond helping safeguard channel /mode settings..

Channel access
A channel is configured to be private (or restricted access) if the +i ("invite only") flag is set on the channel. If +i is set via /mode #CHANNEL_NAME +i then it can be modified by any channel operator, and lapses if the channel empties. If it is set via /msg ChanServ set mlock #CHANNEL_NAME +i then it is enforced by ChanServ, cannot be modified by any user except those authorized, and is saved as the default even if the channel empties. MLOCK is almost always used to manage access if the channel is restricted access.

If a channel is mlocked +i (that is, set to invite-only in Services), then even if the channel is empty, ChanServ will join the channel and eject users not on the access list if they seek to join the channel.

A user is allowed to enter a given channel, either by means of "flags" on their IRC account determining what rights they have for any given channel, or by matching an entry on the channel's "invite list". Thus there are two aspects to this. Quick summary:
 * ChanServ flags - A user with +i set in their flags for the channel, can at any time manually request ChanServ to let them enter the channel. This setting is permanently retained in ChanServ.
 * Invite list - A user matching an entry on the channels "invite list" (via /mode #CHANNEL_NAME +I *!*@your/cloak) does not need to request access manually, it will be automatically granted each time. This setting is lost if the channel empties. If this happens the user can still invite themselves manually (if they have +i flag at ChanServ) until the invite list is reinstated by any channel operator. See below for how to keep a copy of the invite list and how to invite yourself manually.
 * Which to use - It is common for a user to have both a ChanServ +i flag setting (to ensure they can always get into the channel manually at any time if needed) and also a channel /mode +I "invite list" entry (for convenience, so they don't need to ask each time)

Channel user groups
Flags may be set either manually to a given custom setting, or more commonly, pre-defined templates are used to standardize them and make this easier, by defining "user groups" for the channel (to use the MediaWiki term) - categories of users who get similar rights on a channel.

Unlike MediaWiki, the user groups are channel specific and not global. They have no significance whatsoever beyond standardizing the channel's management. The same user may be in different user groups on different channels, and different channels may use the same user group name for different purposes.

Thus on an admins channel there may be user groups defined for "admin" or "wmf_staff", which simplifies the granting of flags for new users - instead of checking which flags to give manually, one can simply define them as a member of a given user group for that channel and the appropriate flags will be granted automatically.

Commands and usage
Covers:
 * Specifying a channel as invite-only
 * Defining user groups for a channel
 * Setting the rights a user has in respect of a given channel (custom, or via usergroups)
 * Defining a user as being able to invite themselves into a channel manually at any time
 * Inviting yourself to a channel you have "self invite" access on (+i flag set in ChanServ)
 * Adding a user to an "invite list" for automatic access
 * Getting a copy of the invite list for a channel
 * Keeping ChanServ in a channel, so it does not empty and so the invite list is not easily lost

To specify a channel as invite-only:
 * /msg ChanServ set #CHANNEL_NAME mlock +i (or whatever flags are needed)
 * Eg: /msg ChanServ set #wikimedia-stewards mlock +i

To define various user groups for a channel:
 * /msg ChanServ template #CHANNEL_NAME TEMPLATE_NAME flags
 * Eg: /msg ChanServ template #wikimedia-stewards steward +vVsR defines a user group for this channel, to be called "steward", and the flags that users in that group will get)

To set the rights a user has in respect of a given channel (custom, or via usergroups):
 * /msg ChanServ flags #CHANNEL_NAME USER_ACCOUNT USERGROUP
 * Eg: /msg ChanServ flags #wikimedia-stewards bastique steward, or


 * /msg ChanServ flags #CHANNEL_NAME USER_ACCOUNT flags
 * Eg: /msg ChanServ flags #wikimedia-stewards bastique +vVR

To define a user as being able to invite themselves into a channel manually at any time (you usually want this):
 * Include +i in the flags for their user group, or the custom flags you give them.
 * Eg: /msg ChanServ flags #wikimedia-stewards bastique +vVRi

'''Self invite usage: A user who has +i for a channel (whether custom or as part of their user group) may at any time invite themselves into that channel. They will need to be logged in on IRC first, via /msg NickServ IDENTIFY:'''
 * /msg ChanServ invite #CHANNEL_NAME
 * Eg: /msg ChanServ invite #wikimedia-stewards will enable you to join that channel without further difficulty

To automatically remain invited (until the channel empties), a user with a cloak may be added to the channel's invite list by any channel operator:

Become an operator of the channel:
 * /msg ChanServ OP #CHANNEL_NAME

Then add the user to the invite list using their cloak as a mask:


 * /mode #CHANNEL_NAME +I *!*@your/user/cloak (note uppercase)
 * Eg: /mode #wikimedia-stewards +I *!*@unaffiliated/johndoe
 * Technically, /mode can take any mask, so a user who lacks a cloak can be auto-invited on the basis of some host-mask; this is very poor practice as host-masks are not usually secure and can be spoofed.

To get a copy of the invite list for a channel for future use:

You need to set yourself as a channel operator to do this:
 * /msg ChanServ OP #CHANNEL_NAME

Retrieve the invite list:
 * /mode #CHANNEL_NAME +I (note uppercase)
 * Eg: /mode #wikimedia-stewards +I

To keep ChanServ in a channel, so it does not empty and /mode settings are less likely to be lost:
 * /msg ChanServ set #CHANNEL_NAME guard on
 * Eg: /msg ChanServ set #wikimedia-stewards guard on

Help on IRC commands
IRC has its own help system. Type:
 * /msg SERVICE_NAME help, or
 * /msg SERVICE_NAME help COMMAND_NAME

For example:
 * /msg ChanServ help
 * /msg ChanServ help set
 * /msg ChanServ help set mlock


 * /msg NickServ help identify