IRC Manual

/************************************************************************ *  IRC - Internet Relay Chat, doc/MANUAL *  Copyright (C) 1990, Karl Kleinpaste * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *   the Free Software Foundation; either version 3, or (at your option) *  any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */

Date: 04 Apr 1989 Author: Karl Kleinpaste karl@cis.ohio-state.edu Last modification: 15 May 1992 by Mauri Haikola mjh@stekt.oulu.fi

Modified for undernet: 7 Feb 1995 by Carlo Wood carlo@runaway.xs4all.nl

INTERNET RELAY CHAT (IRC) a real-time conversational system


 * 1: IRC - replacement for talk(1)

IRC is a functional replacement for and improvement to talk(1). Talk is an old, primitive, atrocious, minimalist sort of keyboard/screen conversation tool, using a grotesque, machine-dependent protocol. IRC does everything talk does, but with a better protocol, allowing more than 2 users to talk at once, with access across the aggregate Internet, and providing a whole raft of other useful features.

Note (added Apr 7, 1998): The above statement has been left there for historical reasons. It should be noted however that IRC is not any longer a replacement for talk(1). At the time IRC was first developed, people connected to internet all were using accounts on UNIX Operating Systems, which almost all did run a non-restricted fingerd and a talkd. This allowed to see if someone was logged in (with finger) and then summon him to talk by connecting to his talk daemon. For IRC however it is necessary to already be connected to an IRC server and one needs to pay attention to the window of the IRC client in order to see if someone wants to talk to you. Therefore IRC has become more of a 'chat box': a Real Time Chat environment for chatting, making friends and exchanging information. It has little resemblance anyore with talk(1).


 * 2: Entering Internet Relay Chat

To enter Internet Relay Chat you need to run a client, which will start connecting to its default server. More info on clients can be achieved from ftp://ftp.undernet.org/pub/irc/docs/faq/underfaq.1. A lot of clients for all kinds of Operating Systems and (programming) languages can be found in ftp://ftp.undernet.org/pub/irc/clients/index.html.


 * 3: How much can be seen from here

The universe - seriously.

This is most formally called Internet Relay Chat. Server hosts are connected via a tree structure. The various servers relay control and message data among themselves to advertise the existence of other servers, users, and the channels and other resources being occupied by those users.


 * 4: Structure

There is quite a lot of structure to the operation of IRC, as compared to crufty old talk(1). Since so little could be done with talk(1), it needed little structure. But to keep track of people spread literally around the world, the structure is useful so that one can speak to exactly those people with whom one wishes to speak. The structure is outlined in more detail in the paragraphs below.


 * 4.1: Nicknames

All users of IRC are known to the system by a `nickname.' A nickname can be chosen at the moment the client connects, but can be changed at any time. Nickname clashes are not allowed; this is enforced by the servers. If one's intended nickname clashes with someone else as one enters chat, one will not be able to complete entry to IRC until one changes one's nickname to something else.


 * 4.2: Presence on a channel

Fundamental to the operation of IRC is the concept of a channel. All users are `on a channel' while inside IRC. One enters the `null channel' first. One cannot send any messages while not in any chatting channel unless one has set up a private conversation in some way. The number of channels is virtually unlimited - whatever will fit in a string of 200 characters and starts with a #, & or + sign. A channel which is prefixed with a '#' (pound sign) is a global channel; available to everyone on the network. A channel prefixed with a '&' (ampersand) is a local channel; only available to users on the server you are connected to. While a channel prefixed with a + (addition sign) are global and modeless; those channels do accept mode changes.


 * 4.3: Main modes of #channels

Public

This is the default mode for a channel. When one is on a public channel, one can be seen by all other users (if one's own user mode permits this). Anyone can notice users on a public channel and join such a channel's conversation.

Private

This means that, although anyone can see that one is using chat, no one can tell what channel one is using unless one is already on that channel with oneself. Since the number of potential channels is in the billions, this is quite some security - all one gives away is the acknowledgement that one is using chat.

Secret

While one is on a secret channel, no one who is not on one's channel with oneself can even see that one is there. One's name does not show up in a wildcard search of active users. Of course, making a channel like '#test' secret gives a huge change to be discovered anyway.

Changing the mode

The mode of a channel (private, secret, invite-only, moderated, topic-limited, person-number-limited, no-messages-to-channel, ban someone from channel, etc.) is set by a channel operator, who is the first person to join a channel, or someone who has had channel operatorship bestowed on them by another channel operator.

Local channels

Channels which are prefixed with the ampersand (&) sign are local channels which mean they can only be accessed to users who are on the same server. For example, &help may exist on every server on the network, however each of them are different channels whereas global (#) channels are just one channel for the entire network.

Modeless channels

Channels that have a name that start with a plus sign (+) instead, are modeless. This means that nobody is channel operator and hence no mode changes can be done. The default mode of a +channel is "+nt". The intention of modeless channels is to avoid channel wars by making all users on that channel a-priori equal. The only possible abuse, channel flooding, should be solved with /ignore.


 * 4.4: Conversations not using channels

It is possible to conduct conversations with others without using the formalized channel structure. Doing so requires that two people set themselves up for private conversation using special commands; see User Commands below.


 * 5: Getting help

Type "/help." Follow the instructions. Since this is a client feature it might not work for you, in which case you'd have to consult your local IRC guru or someone on the net.


 * 5.1: User commands

In most clients, commands must start with a '/' (for example: /join #test). The most important commands supported by IRC are:

help     quit       who     whois list    topic      join      part links      msg    invite   silence names    stats      nick      away info    clear     query    ignore mode

Also read the file ADD-TO-IRCRC for a description of Undernet specific commands and an example script for the ircII client.


 * 5.1.1: /quit [comment]

/quit exits chat. Optional comment may be included; see above.


 * 5.1.2: /who [channelname_mask | user@host.mask]

/who returns information on who is using chat. Users of public channels show up with one of their channels identified, if any. Users of private channels appear, but they are specified as being on a private, unspecified channel. Users of secret channels and users whose user mode is +i (invisible) do not appear at all.

Giving a channel name as an argument to /who returns only those users of the specified channel. This still doesn't show users of secret channel or invisible users one is actually on the same channel with them. Users of private channels are shown, if an exact channel name is given.

For a detailed explanation of the many options of /who, see doc/readme.who !


 * 5.1.3: /whois

This returns information about individual users. Type "/whois nickname" to get information on the login name and host from which the nicknamed user comes. You can specify multiple nicknames to query by seperating each with a comma.


 * 5.1.4: /topic

Channels can be given off-the-cuff "topics." Saying "/topic some string of text" will associate that topic with the current channel.


 * 5.1.5: /list [options] [channel.mask]

/list will give lists of active channels, the number of users of each, and the topics therewith associated. Again, secret channels do not appear and private channels only appear as Prv.

[options] is a comma seperated list of one or more of the following options:

>nnn ccc Tttt

This comma seperated list may not contain spaces. Here `nnn' is the minimum or maximum number of users on a channel, `ccc' is the minimum or maximum age or creation time of a channel, in respectively seconds or UTC. And `ttt' is the minimum or maximum age or creation time of the topic of the channel, in respectively seconds or UTC.

On most servers, if no options are given, the server will use a default option (like "T<10") in order to strongly reduce the of number of listed channels.


 * 5.1.6: /join [key]

/join  is the means to enter a channel. Give the channel name as an argument. If this is a secret or hidden channel, /who commands will show oneself and any other users of one's channel.

One's arrival on a channel is announced to the rest of the users already on that channel. Silent, anonymous "lurking" is not supported.

If the channel is locked with a key, you need to add the [key] parameter which acts as a password (cannot contain spaces).


 * 5.1.7: /msg

A single message can be sent privately to a certain user with /msg. Type /msg nickname and the text to be sent. It will be sent privately to the indicated nickname.


 * 5.1.8: /invite <#channel>

If there is a user online to whom one wishes to speak, one may invite that user to join oneself on a certain channel. One types "/invite nickname" with an optional channel name. The receiving user gets a one-line message indicating the sender and the invitation. The receiving user is free to ignore the invitation, of course. You cannot invite users to a modeless channel.


 * 5.1.9: /ignore 

If one wants to ignore messages sent by some other user or users, it may be done with /ignore command. One can ignore someone by their nickname, or by their user@host data. Wildcards may be used. /ignore is only intended to ignore annoying public messages (messages sent to a channel), to stop flooding (a huge number of messages per second) you have to use banning for channel messages, and /silence for private messages. /mode +d stops all messages from ALL channels.


 * 5.1.12: /silence [nick!user@host.mask]

This command effectively stops private message flooding at the server of the flooder. You can use "/silence nick" to get a list of the silence masks of 'nick'. This command is undernet specific and therefor not supported by all clients unless you add specifically a line to your clients configuration file.


 * 5.1.11: /nick 

One can change nicknames by issuing "/nick new-nickname." All users on one's channel will be informed about the change. NOTE: If one enters chat with a nickname clash (e.g., one's login name is the same as someone else's, and the other user got there first), the system will not let one enter until one issues a /nick command with a unique nickname. Nicknames are limited to nine characters in length on the Undernet.


 * 5.1.12: /mode #channel [lots of parameters]

This command can be used for altering the various modes of a channel (see the explanation of channel modes above). /mode command can only be issued by channel operators. Please use /help, or the manual of your client to find out about this command.

If you would like a list of the current modes in the channel, type /mode (you do not need to be a channel operator to do this). For a list of channel bans, type /mode +b.


 * 6: Questions, problems, troubles?

If you have problems, please get and read the FAQs from ftp.undernet.org:/pub/irc/docs/underfaq.1 and underfaq.2. You can also ask for help on some of the operator channels on IRC, for example #help. They will be able to assist you in whatever problems you are having with IRC.