Registering a Channel

/msg chanserv register #channel password description.
You must have a registered nickname and channel operator status in a channel in order to register a channel. The password can be used with the IDENTIFY command to modify channel settings later.

Operator Types

~Channel Owner+qhas full power over channel, can make others ops, super-ops, half-ops, ban, kick, etc..
&Admin/Super-op+acan make and take operator and half-op status, can ban/kick users and modify badword list, can not make others super-ops.
@Operator+ocan make and take operator and half-op status as well as ban/kick users.
%Half-op+hcan ban/kick users but can not issue ops or half-ops.

Auto-Oping using ChanServ

Add a user to auto-op list: /msg chanserv aop #channel add nick
Add a user to super-op list: /msg chanserv sop #channel add nick
Add a user to half-op list: /msg chanserv hop #channel add nick

You may choose not to use AOP/SOP/VOP commands in order to give channel privileges. You can use ACCESS levels instead and may customize access levels. See /msg chanserv help set xop for help on this. You may also see /msg chanserv help aop; /msg chanserv help hop; etc..

Customizing your Channel by Setting Modes

You can customize your channel by setting channel modes. The command is /mode [+/-]themode. So for example to stop ANSI color commands from being sent to the channel you can set the mode +c as follows: /mode +c. To remove it: /mode -c while in the channel. You can use ChanServ to automatically set channel modes when it goes from being unpopulated to populated by setting the mode lock: /msg chanserv set mlock themodes.

Channel Modes

a <nick>
Makes the user a channel admin
b <nick!user@host>
Bans the given user from the channel
No ANSI color can be sent to the channel. See also channel mode (S)
No CTCP's allowed in the channel
e <nick!user@host>
Exception ban – If someone matches this, they can join a channel even if they match an existing ban
f [<number><type>]:<seconds>
Channel flood protection. See section 3.12 above for an extended description.
Makes channel G rated. Checks for words listed in the Badword Blocks, and replaces them with the words specified
h <nick>
Gives half-op status to the user
Invite required
I <nick!user@host>
Invite exceptions ("invex") - if someone matches this, they can bypass +i requirements to enter the channel.
j <joins:seconds>
Throttles joins per-user to joins per seconds seconds
/knock is not allowed
k <key>
Sets a key needed to join
l <##>
Sets max number of users
L <Chan>
If the amount set by +l has been reached, users will be sent to this channel
A registered nickname (+r) is required to talk
Moderated channel. Only +v/o/h users may speak
No nick name changes permitted
No messages from outside channels
o <nick>
Gives a user channel operator status
Makes channel private
q <nick>
Sets channel owner
Nobody can kick users in channel.
Requires a registered nickname to join
Strips all incoming colors
Makes channel secret
Only chanops can set topic
No NOTICE's allowed in the channel
Auditorium – Makes /names and /who #channel only show channel ops
/invite is not allowed
v <nick>
Gives a voice to users. (May speak in +m channels)
Only clients on a Secure (SSL) Connection may join

What is a hostmask?

In laymens terms, a hostmask is a unique identifier tied to a specific user. While a user may change his nickname, his hostmask will stay the same unless he changes ISPs or connects through a proxy.

How to determine a user's hostmask

The hostmask of a user is displayed when he first enters a channel: simon [] has joined #channels. It can also be deteremined by typing /whois nickname and will appear in your main connection window. A hostmask takes the format of user@host. In the above example is the hostmask.

Banning a user

Many IRC clients make it easy to ban users. Often you can right mouse click the user you'd like to ban and click ban. With other text-based clients such as irssi you can type /ban user. While these mechanisms make it easy it's also important to understand the manual syntax so that you can perform other types of bans, take advantage of advanced maneuvers or maintain detailed control over your ban.

Banning a user manually is simple and consists of setting a channel mode. The ban syntax looks like this: /mode +b nick!user@host. Notice the hostmask is prefixed by the nickname of the user delimited by an exclaimation point. If we wanted to ban the user simon in our hostmask example above we would type: /mode +b simon! If you are thinking like a troll you probably already figured out that simon can simply change his nickname to evade the ban. In that case, making use of wildcards would provide a more extensive ban: /mode +b *!* would be a better method. Be careful, wildcards can be dangerous; you could end up banning everyone if done wrong. Do some practicing with a couple friends in a private channel to get your chops up.

Different types of bans

There are different types of bans that you may take advantage of. The most commonly used ban is demonstrated above and prevents a user from joining a channel and speaking once set. The following bans may be useful as well:

Extended bans look like ~<type>:<parameter>.
They let you ban (or exempt) based on things other than the traditional nick!user@host mask. They also provide support for things like 'quieting' users.

These bantypes specify which actions are affected by a ban:

~qquietPeople matching these bans can join but are unable to speak, unless they have +v or higher. Ex: ~q:*!*
~nnickchangePeople matching these bans cannot change nicks, unless they have +v or higher. Ex: ~n:*!*@*
~jjoinIf a user matches this, he may not join the channel. He may perform all other activities if he is already on the channel, such as speaking and changing his nick. Ex: ~j:*!*@*
Could be useful to prevent people from one ISP from joining, but still make them able to speak/nickchange freely once in the channel, like after an /INVITE.

These bantypes introduce new criteria which can be used:

~cchannelIf the user is in this channel then (s)he is unable to join. A prefix can also be specified (+/%/@/&/~) which means that it will only match if the user has that rights or higher on the specified channel. Ex: +b ~c:#lamers, +e ~c:@#trusted
~rrealnameIf the realname of a user matches this then (s)he is unable to join.
Ex: ~r:*Stupid_bot_script*
NOTE: an underscore ('_') matches both a space (' ') and an underscore ('_'), so this ban would match 'Stupid bot script v1.4'.
~RregisteredIf a user has identified to services (usually NickServ) and matches this nickname, then this ban will match. This means this ban is really only useful for ban exemptions (+e).
Ex: +e ~R:Nick will allow Nick in the channel, regardless of other bans, if he identified to NickServ and is using the nickname Nick.

You may stack extended bans from the 1st group with the 2nd, such as +b ~q:~c:#lamers, which would quiet all users who have joined #lamers.

A note on CGI's and Mibbits
Often users entering chat from a CGI client or mibbit will take on the hostmask of the CGI or Mibbit service. In this case it can be hard to ban them. Often CGI's will place their real hostmask in the "Real Name" or ircname field when performing a /whois on them. The ~r type ban would work well for them.