Moderating IRC

There are two approaches to moderating an IRC room, either by an appointed moderator, or by the users them selves.

Diffusing a situation

Having users diffuse the situation on their own is always the best outcome, tension might have built up from misunderstandings caused by language barriers or missed steps during troubleshooting for example. Freenode, the IRC network we use, call these users Catalysts:

Catalysts try to resolve problems, not through the use of authority and special privilege, but by fostering consensus, gently nudging participants in the direction of more appropriate behavior and by generally reducing the level of confrontation rather than confronting users with problems.

Catalysts on freenode

Top ↑

Admin Commands

If you’re a moderator and ops are called for, you will need to turn on ops mode.

/msg chanserv op #wordpress

When you’re done:

/msg chanserv deop #wordpress

Top ↑

When moderation is needed

If a moderator has to step in and resolve a situation, it is important to not make rash decision, look at what has happened and make an educated decision based on facts rather than heat of the moment calls for intervention, if you are not already in the room when a situation occurs, consult the channel logs to ensure a fair judgement on the situation.

Please do keep in mind that a show of force should always be the last resort, and attempting to resolve the situations through conversation is the recommended approach, at times a conversation can be overrules by OPing up (getting a channel moderation prefix) to show that your say s final, but this should not be the default approach to solving a situation.

When all else fails, you may move on to more extreme reactions.

Top ↑

WhoIs a user

The first action you’ll want to do when taking action against a user is to look up the user with a `/whois` command, an example output is as follows:

Clorith is ~marius@ * marius
Clorith on #wordpress #wordpress-social
Clorith using TX, USA
Clorith is logged in as Clorith
Clorith End of /WHOIS list.

From this we can determine where I am connecting from, if their nickname is registered on the IRC network and such. This is all handy information for later on.

What is important to take not of here is if there are obvious indications of this being either a proxy connection, or a dynamic IP address. If it’s a dynamic IP you may wish to do a “ident and wildcard host” match that takes a subnet into account (this is to try and not affect other users on the same subnet):


A proxy can be handled any way you like, it’s a throwaway and you won’t see it again any time soon, so any pattern you deem worthy will work there.

If they have a registered nickname, you can target the nickname alone, as they are likely to keep using it:


Top ↑


One of the simpler form of dealing with users is the channel mute. Some mutes are automated for things such as foul language and spamming (too much text within short time windows)

Of course there are situations that cal for a manual mute, keep in mind that any manual mute will have to be manually undone as well.

The freenode network has support for a channel user mode known as Quiet, and it uses the data from the previously mentioned WhoIs.

Apply a mute as follows

/mode #WordPress +q $host

$host should be the pattern you go with from the WhoIs

Top ↑


Kicking a user is usually done in conjunction with a ban, or to drive a point across if the user does not wish to listen but you don’t wish to punish them for an extended period of time. (The latter being a dubious approach, but unfortunately what it is often used for)

/kick #WordPress NickName REASON

Top ↑

Banning a user

One of the two most extreme measures you can take in an IRC channel is banning the user. This action wil bar entry to the channel, and should always be used in conjunction with a kick (a user may still speak if they are in the channel, a ban only blocks entry).

/mode #WordPress +b $host

Again utilizing the pattern from the WhoIs earlier, we apply a ban to the user.

Top ↑


An auto-kick is a server enforced removal from the channel on entry, it can get noisy as the user joins the channel, and is then forcibly removed automatically in plain view.

These require the user to be registered on the server, and to be joining the channel under their registered nickname, or for the host to always match (static IPs are the best here) to be effective.

/msg ChanServ akick #WordPress add $host REASON

This command has multiple flags and uses, and if the use is ever warranted it is recommended that one familiarize one self with the command beforehand.

Top ↑

Good to know

IRC users can take direct actions the wrong way, it is not uncommon that a ban will result in you needing to watch the channel for proxy connections from disgruntled users for some period of time after performing any of the extreme measures above. It is important that someone is available to moderate the room after action is taken in case of such situations.

There may be strength in numbers, but there’s wisdom in few.

If someone is already diffusing a situation, don’t jump in and add to it, if it’s already calming down this may making the user feel ganged up on, or restarting the whole ordeal might have a negative impact and lead to frustration and escalation.

ChanServ has many handy commands, which can all be accessed using the help command

/msg ChanServ help

Last updated: