The purpose of this guide is to help operators learn some of the skills necessary to perform their jobs.
Once you become an operator in a channel, it is recommended that you wear your channel privileges only when needed. This means that you will need to instruct ChanServ to OP you when you need to perform operator-related duties. You can have ChanServ OP you in a channel by using this command:
/msg ChanServ OP #channel
When you no longer need your operator powers, you can remove them by using this command:
/msg ChanServ DEOP #channel
Banning a user from a channel will stop them from talking in that channel, and from entering the channel. The IRC team Operator Guidelines have a guide to when this is and isn't necessary. A ban can be set with:
/msg ChanServ OP #channel /mode #channel +b nick!username@host /msg ChanServ DEOP #channel
freenode also supports extended bans against account name, realname, or a full match against nick!username@host#realname. There's more information about them on freenode's website. These aren't used as often as regular bans, but by way of example, you could ban someone with a realname starting with "Example" with the following commands:
/msg ChanServ OP #channel /mode #channel +b $r:Example* /msg ChanServ DEOP #channel
If you ban a user from a core channel, ubottu will automatically prompt you to add a reason for the ban to the bantracker.
Find bans for a specific user
Often, bans can be difficult to find because they can be set on any of the user's hostname, realname, username, or nickname. The bantracker can be useful to find bans set against a user (see the "Using the Bantracker" section below). Otherwise, several IRC clients provide a search feature for ban lists, so you can search by each part of the user's mask to find a ban.
To remove a ban once you've found it, use the following commands (which are the same as the ones used to set the ban, with -b instead of +b):
/msg ChanServ OP #channel /mode #channel -b nick!username@host /msg ChanServ DEOP #channel
It's useful to ask the user to attempt to join the channel immediately once you've removed the ban, so you can check that they aren't banned under another mask that you missed.
When you quiet a user, they are able to remain in the channel and rejoin it later (while a ban won't let them rejoin), but they cannot talk. There are a few common cases where you will want to use a quiet. The first case is if someone forgets to use a site like paste.ubuntu.com and tries to paste a very long document into the channel. You will want to place a quiet on the user until you think their client is done with the paste. A quiet can be set with:
/msg ChanServ OP #channel /mode #channel +q nick!username@host /msg ChanServ DEOP #channel
Quiets can also be set through ChanServ. This has the advantage of not requiring you to OP yourself prior to setting the quiet. Keep in mind that this method of quieting a user will notify any affected user that you set the quiet, even though it will not show that in #channel (which can be a good and bad thing). You can use the following command to set a quiet through ChanServ:
/msg ChanServ QUIET #channel nick!username@host
Just like when setting a quiet, there are 2 methods to unquiet a user.
/msg ChanServ OP #channel /mode #channel -q nick!username@host /msg ChanServ DEOP #channel
/msg ChanServ UNQUIET #channel nick!username@host
Please note, that just like when setting a quiet through ChanServ, when you use ChanServ to unquiet a user, they will be notified that you were the person who unquieted them.
One other common instance for an OP to quiet users is during a large bot attack on the channel. In cases like this, it is often best to quiet all non-identified users (this is the equivalent of the old +R channel mode), as no other quiet will usually work. To do this, do one of the following:
/msg ChanServ OP #channel /mode #channel +q $~a /msg ChanServ DEOP #channel
/msg ChanServ QUIET #channel $~a
That last example uses an extban. More information on extbans is available on the freenode website.
In some situations, you may find it necessary to forcibly make a user leave the channel. The 'kick' command can be used to remove troublemakers, flooders, or people otherwise making a nuisance of themselves on the channel. For example, to remove 'troublemaker45' from #mychannel, you would do:
/kick #mychannel troublemaker45 Do not cause trouble in #mychannel
That message specified after the nick will be shown to the user (as well as the rest of the channel) and is a good way to inform the user about the reason for the kick. In some situations, the user will automatically rejoin the channel due to a script/setting in their IRC client. If that happens (and is not desired), please see the next section on removing users.
freenode has a special feature not present on most other IRC networks. Sometimes, when you kick a user from the channel, they automatically rejoin (due to a script in their client). Depending on the reason behind wanting the user out of the channel, a ban might not be appropriate. In situations like this, you should use the 'remove' command. This will make the user's IRC client think that the user left the channel by using /part. As a result, it will not automatically rejoin the channel. Most IRC clients will not properly recognize the remove command. As a result, you will want to send it directly to the server with:
/msg ChanServ OP #channel /quote REMOVE #channel PersonToRemove :Explanation message /msg ChanServ DEOP #channel
/msg ChanServ OP #channel /raw REMOVE #channel PersonToRemove :Explanation message /msg ChanServ DEOP #channel
Using the Bantracker
Whenever a user is kicked, removed, banned, or quieted, and entry is added to the Bantracker. This entry contains the channel, the date and time of the event, a 200 line log up to the event, the hostmask of the user acted upon, the operator who preformed the operation. If the event is a ban or quiet, the entry also contains the date and time the ban/quiet was removed. Along with this data, the Bantracker allows operators to add comments on any event. The Bantracker has a web interface and an IRC interface, for a full list of commands and usage instructions please see The Ubottu Wiki.
Comments are useful to give more context to an event, to link the events together and to provide other additional information. Comments are by operators and intended to be read by other operators. Whenever you preform an operator action on a user (kick/remove/ban/quiet) you should consider commenting on the event, this can be done via IRC or via the web interface (@btlogin). To comment on an event via IRC you need to know the ID of the event, if you preform the action in a channel where ubottu idles it will /msg you with the instructions, if not you can get the ID of bans/quiets using the @bansearch command or from the Bantracker web interface. The command for adding a comment to an event is as follows:
@comment <ID> <comment> Example: <nick> @comment 1234 this is my comment. <bot> The operation succeeded.
You can also retrieve the comments for an event using the @comment command, you just leave out the comment:
@comment <ID> Example: <nick> @comment 1234 <bot> Jan 01 2010 00:00:00 nick: this is my comment.
Looking up bans, quiets, kicks and removes
You can check the Bantracker for for previous kicks and remove, and for active and removed bans and quiets. The Bantracker web interface allows you to search the entire database, or filter results by channel and operator. You can also filter results for kicks/removes, active bans, active quiets, removed bans and removed quiets. The web interface is the best options for advanced searching needs, but for quick lookups you can use the IRC interface. The command @bansearch can lookup active bans and quiets for users or hostmasks in, either a given channel, or all channels. The command has the following syntax:
@bansearch <nick|hostmask> [<channel>] Example: <nick> @bansearch user1 <bot> Match user1!*@* by nick in #channel on Jan 01 2010 00:00:00 (ID: 1234)
A mark is a pseudo-event in the Bantracker, it is similar to a kick/remove except you don't need to actually kick/remove anyone. A mark is useful when you wish to keep a note of a users behaviour, but a kick/remove is not called for, Marks are added with the @mark command, you can either pass the command a full hostmask, or just a nick name and the bot will attempt to get the hostmask for you. When you create a mark you can do so either in the channel, or in another channel/private message. When creating a mark not in the channel, you should give the channel name before the nick or hostmask. Marks will show up in the Bantracker similarly to a kick/remove, except the comment will be prefixed with **MARK**. You can comment on and search for these marks just like any other event. When you add a mark, either use the @mark The syntax for adding a mark is:
@mark [<channel>] <nick|hostmask> [<comment>] Example: <nick> @mark #mychan user2 disruptive influence on others <bot> The operation succeeded.
freenode provides an excellent explanation on their website about the role of the catalyst. All operators should try to be catalysts. To quote freenode:
"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."
Sometimes, catalyzation is enough to resolve a problem, and no bans/kicks or other actions need to be performed.
"Be Courteous. Even under time pressure, courtesy costs little and impresses people a lot. It's not about whether working with the person is easy or difficult; it's about setting the right tone."
Sometimes you might even realize you've been overzealous or otherwise caused a user unnecessary troubles, and when that happens (it's important to stop and think to realize it has happened in the first place, of course), a little "sorry" might go a long way.
Sometimes, you want a user to get forwarded to another channel when they attempt to join your channel. A common example of this is a user whose IRC client keeps quiting/joining, spamming the channel. You can append $#channel to the end of a ban to cause the user to get forwarded to #channel when they try and join your channel. You will need to either be an OP in #channel or the channel will need to have mode +F set in order to create this type of ban forward. An example of how to set this ban would be:
/mode #mychannel +b $r:Foo*$#forwardtome
This would prevent any user whose gecos begins with "Foo" (note the extban) from joining #mychannel. If they attempt to join #mychannel, they will get forwarded to #forwardtome
Dealing with /msg Abuse
When dealing with /msg abuse/spam, you should try and respond as if you are a user, not an operator. For example, if the user is behaving appropriately in #ubuntu (where you are an operator) but decides to start PM spamming you, you should not go and ban them in #ubuntu just because you can. Instead, you should try and act as a catalyst. We also do not recommend /ignore'ing users. This results in you being unable to see what they are saying. However, you are able to ignore this abuse by simply not reading or responding to it.
There are scripts for certain IRC clients that add helpful aliases to frequently used OP commands. For example, they might add an alias that OPs you, sets the channel mode you want, and deops you. These scripts are useful, but you should make sure you know how to perform all of the OP-related actions manually, so you can perform them from a different IRC client that might not have the scripts enabled.
Original source: http://autobleh.projectnet.org/
- or in the 'weechat-scripts' package
HexChat / XChat