A short IRC primer ==================== Written by: ~~~~~~~~~~ Nicolas Pioch, (Nap on IRC) < Nicolas.Pioch@grasp.insa-lyon.fr > Text conversion by: ~~~~~~~~~~~~~~~~~~~ Owe Rasmussen, (Sorg on IRC) < d1rasmus@dtek.chalmers.se > Edition 1.1b, February 28, 1993. Abstract ~~~~~~~~ Have you ever wanted to talk with other computer users in other parts of the world? Well guess what... You can! The program is called IRC, (Internet Relay Chat), and it is networked much over North America, Asia Europe, and Oceania. This program is a substitution for 'talk', and many other multiple talk programs you might have read about. When you are talking on IRC, everything you type will instantly be transmitted around the world to other users that might be watching their terminals at the time, they can then type something and respond to your messages, and vice versa. I should warn you that the program can be very addictive once you begin to make friends and contacts on IRC, especially when you learn how to discuss in 14 languages... Topics of discussion on IRC are varied, just like the topics of Usenet newsgroups are varied. Technical and political discussions are popular, especially when world events are in progress. IRC is also a way to expand your horizons, as people from many countries and cultures are on, 24 hours a day. Most conversations are in English, but there are always channels in German, Japanese, French, Finnish, and occasionally other languages. IRC gained international fame during the late Persian Gulf War, when updates from around the world came across the wire, and most people on IRC gathered on a single channel to hear these reports. CONTENTS ~~~~~~~~~~ 1. Getting started 1.1 Clients and Servers 1.2 How to Behave on IRC 1.3 Privacy on IRC 1.4 First Steps 1.5 Screen and Keyboard activity 2. Let's go! 2.1 General Commands 2.2 Communication and Private Conversations 2.3 Channels and Public Conversations 2.4 Channel and User Modes 2.5 Client to Client Protocol 2.6 Network Related Commands 2.7 Quick Reference Panel 2.8 Further into ircII Wizardry 2.9 Sample .ircrc 2.10 Writing Automatons 3. Frequently Asked Questions 3.1 How do I set up an IRC client? 3.2 Which server do I connect to? 3.3 What are good channels to try while using IRC? 3.4 How do I get nifty effects with ircII? 3.5 What if someone tells me to type something cryptic? 3.6 I get strange characters on my screen, what are they? 3.7 What about NickServ? 3.8 I'm being flooded and harassed by a jerk. Help! 3.9 How do I get rid of a ghosted IRC session? 3.10 About KILL usage. 3.11 Where can I find more? 4. Administrativia 4.1 Revision history 4.2 Release sites for the IRCprimer 4.3 Copyright (C) 1993 Nicolas PIOCH 4.4 Credits List of Tables -------------- Table 1: Editing keys Table 2: Editing commands Table 3: Simple screen activity Table 4: General commands Table 5: Private conversation commands Table 6: Channel commands Table 7: Mode commands Table 8: Channel modes Table 9: User modes Table 10: Client to client commands Table 11: Network related commands Table 12: Setting environment tables Table 13: Environment variables Table 14: Advanced commands Table 15: FTP sites with IRC clients Table 16: Open telnet IRC clients Table 17: Open IRC servers Table 18: Highlighting ircII output Table 19: Nordic countries character translations Table 20: IRC related mailing lists Table 21: IRCprimer release sites 1. GETTING STARTED ================== 1.1 Clients and Servers ~~~~~~~~~~~~~~~~~~~~~~~~ IRC (original code was written by Jarkko Oikarinen) is a multi-user, multi-channel chatting network. It allows people all over the internet to talk to one another in real-time. It is a functional replacement and improvement to 'talk'; 'talk' is an old, primitive, atrocious, minimalist sort of keyboard/screen conversation tool, using a grotesque, machine- dependent protocol (blah!). IRC does everything 'talk' does, but with 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. There are two ways to enter IRC from a Unix system. If you are using the emacs (editor from Richard Stallman and the Free Software Foundation) lisp client, you just have to type "M-x irc", (if this doesn't work you may need to load the client into your emacs session). If you are using the C client, (easier for beginners), then you usually type "irc". Non-Unix boxes have special clients, each of which has to be configured using a special procedure. Check the manual or help screen for more information. If you wish to be known by a nickname which is not your login name, type "irc nickname" instead. Each IRC user, ("client"), chooses a nickname. All communication with another user is either by nickname or by the channel that they or you are on (more information about channels later on). The most important thing to remember about IRC is that you have to be willing to explore and learn to use it... Take you time, try not to get flustered, enjoy yourself, and you will soon be making new friends all over the world! IRC is based on a client-server model. Clients are programs that connect to a server, a server is a program that transports data, (messages), from a user client to another. There are clients running on many different systems, (Unix, emacs, VMS, MSDOS, VM...), that allow you to connect to an IRC server. The client which will be spoken of here is the most widespread: ircII, (originally designed by Michael Sandrof). Other clients are similar, and often accept ircII commands. 1.2 How to behave on IRC ~~~~~~~~~~~~~~~~~~~~~~~~~ The most widely understood and spoken language on IRC is English. However, as IRC is used in many different countries, English is by no means the only language. If you want to speak some other language than English, (for example with your friends), go to a separate channel and set the topic to indicate that. On the other hand, you should check the topic before you move to a channel to see if there are any restrictions about language. On a non-restricted channel, please speak a language everybody can understand. If you want to do otherwise,change channels and set the topic accordingly. It's not necessary to greet everybody on a channel personally. Usually one "Hello!" or equivalent is enough. And don't expect everybody to greet you back... On a channel with 20 people that would mean one screenful of hellos. It's sensible not to greet, in order not to be rude to the rest of the channel. If you must say hello to somebody you know, do it with a private message. The same applies to goodbyes. Also note that using your client facilities, (ircII "ON" command for instance), to automatically say hello or goodbye to people is extremely poor etiquette. Nobody wants to receive autogreets. They are not only obviously automatic, but even if you think you are polite you are actually sounding insincere and also interfering with the personal environment of the recipient when using autogreets. If somebody wants to be autogreeted on joining a channel, he will autogreet himself. Remember, people on IRC form their opinions about you only by your actions, writings and comments, so think before you type. If you use offensive words, you'll be frowned upon. Do not "dump" to a channel or user, (send large amounts of unwanted information). This is likely to get you kicked off the channel or killed off from IRC. Dumping causes network "burps", connections going down because servers cannot handle the large amount of traffic anymore. Other prohibited actions include: * Harassing another user. Harassment is defined as behavior towards another user with the purpose of annoying them. * Annoying a channel with constant beeping. * Any behavior reducing the functionality of IRC. 1.3 Privacy on IRC ~~~~~~~~~~~~~~~~~~~ You should always keep in mind that messages you send to someone over IRC are passed along all the servers between you and and the person you are writing to. When you're sending a letter to someone, any postman on the way could open it and read its contents... Well, it's the same on the network. Any IRC-Admin could compile its server in "debug" mode and log whatever messages are transmitted through his node, (it has already been done), so a good thumb rule is not to trust the servers. +-------------------------------------------+ | IRC IS NOT A SECURE WAY OF COMMUNICATION! | +-------------------------------------------+ How to establish direct communications between clients will be explained later, (see DCC CHAT in section 2.5). This should be used when you wouldn't want anybody else on IRC to intercept your private messages. 1.4 First Steps ~~~~~~~~~~~~~~~~ Note: ircII, the client most people are using, has most of this information online. If you are stuck, type "/HELP" and hit . To escape from HELP mode, keep pressing until your edit line, (the line at the bottom of the screen), is empty. Most of the information in this file can be found typing these commands: "/HELP INTRO" or "/HELP NEWUSER". +------------------------------------------------+ | All ircII commands begin with a "/" character. | +------------------------------------------------+ The slash is the default command character. Commands are not case sensitive, and can be abbreviated to their first letters: "/SI" and "/sign " stand for /SIGNOFF and will both end your IRC session, (more in section 2.1). Anything that does not begin with "/" is assumed to be a message to someone and will be sent to your current channel, or to a person you are QUERYing, (the QUERY command will be detailed later on, maybe even section 2.2). If you are not sure about the spelling of an ircII command, type the prefix of that command, and press the ESCape key twice; ircII will give you a listing of commands and aliases that start with that prefix. Don't forget the "/" in front of the command though. /W *** Commands: *** WAIT WALL WALLOPS WHICH *** WHILE WHO WHOIS WHOWAS *** WINDOW *** Aliases: *** W This is an example. Your screen may show more aliases, and less commands than shown here, or less aliases and more commands - in other words "your mileage may vary"... 1.5 Screen and Keyboard activity ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ IRC is a full-screen utility. It takes over the screen, with the bulk of activity happening in the top (N-2) lines, a status line, (vaguely emacs-like), on the next to last line, and your input being entered on the last line. When typing commands at ircII, you have a minimalist line-editing facility in an emacs style. Table 1: Editing keys ---------------------- Key Effects ~~~ ~~~~~~~ ^P recalls previous command line ^N recalls next command line ^F moves forward one character ^B moves backward one character ^A moves the cursor to the beginning of the line ^E moves the cursor to the end of the line ^D deletes the character under the cursor ^K kills from the cursor to the end ^Y reinserts the last stretch of killed text ^U clears the whole line ^L redraws the screen Table 2: Editing commands -------------------------- Keyword Action ~~~~~~~ ~~~~~~ ! recalls previous commands for re-editing HISTORY displays the command history LASTLOG lists the most recent messages CLEAR puts some white space on your screen The ! command is used to recall previous commands in your command history for re-execution. The ! command is unique in that when it is used, it leaves the matching history entry in the input line for re-editing. You can specify a history entry either by its number in the history list, or by a match with a given wildcard expression. For instance, "/!10" will put entry 10 in the history list into the input line. "/!/MSG" will search the history for a line beginning with a /MSG, (a "*" is implied at the end). /![|] Recalls previous commands for re-editing. The command history can be dumped using: /HISTORY [] Displays the command history on the screen. You can specify the number of history entries you wish to view as well. Almost everything happens in the upper bulk of the screen. This includes both messages from other users, as well as the output of the control commands. Normal messages from other users appear with the originating nickname in . Private messages arrive with the originating nickname in *asterisks*. Messages you send to everyone appear with a preceding "> " whereas messages you send privately to another user appear with "-> *nickname*". Other output (invitations from other users to join channels, and so forth), appears interspersed with other activity on the screen. Table 3: Simple screen activity -------------------------------- What is displayed What you typed Sender Recipients ~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~ ~~~~~~ ~~~~~~~~~~ > Morning people Morning, people You Channel hello some1else Channel -> *some1else* hi! /msg some1else hi! You some1else (only) *some1else* wassup? some1else You (only) Last ircII outputs can be recalled with: /LASTLOG [| []] Displays the contents of the lastlog. This is a list of the most recent messages that have appeared on the screen, useful if you inadvertantly miss messages. If no arguments are given, the entire lastlog is displayed. If the first argument is a number, it determines how many log entries to show. Otherwise it is searched for in every lastlog entry. The second argument determines how many lines back to start display from. Example: /LASTLOG > Public message I send to all in the channel Public message from some1else *some1else* Private message sent to me by some1else -> *some1else* Private message I send to some1else Finally, if your screen gets garbage from a 'talk', 'write', 'wall' or any other form of primitive communication (smirk), hit ^L to redraw it, or CLEAR it. /CLEAR Clears the screen. 2. LET'S GO! ============ 2.1 General Commands ~~~~~~~~~~~~~~~~~~~~~~ Table 4: General commands -------------------------- Keyword Action ~~~~~~~ ~~~~~~ NICK changes your nickname QUIT exits your IRC session, (same as BYE, SIGNOFF and EXIT) HELP prints help on the given command WHOIS displays information about someone WHOWAS displays information about someone who just left AWAY leaves a message saying you're not paying attention /NICK [] Changes your nickname to whatever you like. Everyone who wants to talk to you sees this name - also, at the moment, nicknames are limited to 9 characters max. Your nickname will be the same as your login name by default. You can also set an environment variable, IRCNICK, the value of which will be used instead. Nickname clashes are not allowed; this is enforced by the servers. If your intended nickname clashes with someone else's as you enter IRC, you will not be able to enter until you change it to something else. /NICK Nappy *** Nap is now known as Nappy /QUIT [] Exits your IRC session. You can also use BYE, SIGNOFF and EXIT. If a reason is supplied, it is displayed to other people on your channels. /QUIT Lunch Time! poly ~ > /HELP [] Shows help on the given command. /HELP HELP Usage: HELP [command] Shows help on the given command. The help documentation is set up in a hierarchical fashion. That means that certain help topics have sub-topics under them. [boring stuff deleted] /WHOIS [] Shows information about someone. /WHOIS Nap *** Nap is pioch@poly.polytechnique.fr (Klein bottle for sale... inquire within.) *** on channels: @#Twilight_Zone @#EU-Opers *** on via server poly.polytechnique.fr (Ecole Polytechnique, Paris, FRANCE ! ) *** Nap has a connection to the twilight zone (is an IRC operator) *** Nap has been idle 0 seconds /WHOIS Nappy *** Nappy: No such nickname Sometimes WHOIS won't help you much, because the person you want to know more about just left IRC or changed nick. However, you can use WHOWAS to get this information for a while: /WHOWAS [[] ] Shows information about who used the given nickname last, even if no one is currently using it. /WHOWAS Nappy *** Nappy was pioch@poly.polytechnique.fr (Artistic ventures highlighted. Rob a museum.) on channel *private* *** on irc via server poly.polytechnique.fr (Signoff: Mon Jun 22 20:15:23) Very often, an unsuccess call to WHOIS will lead you to try WHOWAS. That's why ircII allows you to "/SET AUTO_WHOWAS ON"; that way, a "*** : No such nickname" message will automagically generate a "/WHOWAS ". Try typing "/HELP SET AUTO_WHOWAS" for more information on this topic. /AWAY [] Leave a message explaining that you are not currently paying attention to IRC. Whenever someone sends you a MSG or does a WHOIS on you, they automatically see whatever message you set. Using AWAY with no parameters marks you as no longer being away. /AWAY Gone to get a cup of coffee. *** You have been marked as being away /AWAY *** You are no longer marked as being away 2.2 Communication and Private Conversation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Table 5: Private conversation commands -------------------------------------- Keyword Action ~~~~~~~ ~~~~~~ MSG sends a private message QUERY starts a private conversation NOTICE sends a private message NOTIFY warns you of people logging in or out IRC IGNORE removes output from specific people off your screen You can use the MSG command, (usually "M" is an alias for it), to send someone a message that only that person can read. /MSG | Send a private message to specified nickname. /MSG Nap This message is for Nap only. -> *Nap* This message is for Nap only. On my screen will appear: *YourNick* This message is for Nap only. If you want to send a private message to more than one person, you can specify a list of nicknames separated by commas, (no spaces). /MSG Nap,Sorg This message for both Nap and Sorg. -> *Nap* This message for both Nap and Sorg. -> *Sorg* This message for both Nap and Sorg. Two special case nicknames are defined. If the nickname is "," (a comma), the message is sent to the last person who sent you a MSG. If the nickname is "." (a period), the message is sent to the last person to whom you sent a message. You can have a private conversation by only using /MSG. However, typing "/MSG " or "/MSG . " gets cumbersome. That's where the /QUERY command comes in handy. /QUERY [|] Starts a private conversation with . All text you type that would normally be sent to your channel now goes to the supplied nickname in the form of MSGs. To cancel a private conversation, use QUERY with no arguments. /QUERY Nap *** Starting conversation with Nap Blahblahblah -> *Nap* Blahblahblah /QUERY *** Ending conversation with Nap There is also another command to send messages, called NOTICE. Unlike MSGs, NOTICEs are surrounded by '-' when printed, and no automated responses, (such as generated by IGNORE or an automaton), will be sent in reply. Services, (robots), on IRC often use this form of interaction. /NOTICE | Sends a private message to the specified . /NOTICE Nap Better use /MSG instead of /NOTICE. -> -Nap- Better use /MSG instead of /NOTICE. On my screen will appear: -YourNick- Better use /MSG instead of /NOTICE. As you begin to make new friends over IRC, you'll want to mark certain nicknames such that you will be warned when they signon or off. /NOTIFY [[-]] Adds or removes to the list of people you'll be warned when they enter or quit IRC (in ircII versions prior to 2.2, too many people in the NOTIFY list cause excessive slowness). /NOTIFY Nap Nappy *** Signon by Nap detected /NOTIFY *** Currently present: Nap *** Currently absent: Nappy Eventually, you may wish some day not to see messages from a specific user on your screen. This may happen when someone is dumping large amounts of garbage, or if someone is harassing you. The proper response to such a behavior is to IGNORE that person. IGNORE is a very powerful command, and can be used in many ways. However the basic usage of this tool is the following. /IGNORE [| [[-]]] Suppresses output from the given people from your screen. IGNORE can be set by nickname or by specifying a userid@hostname format. Wildcards may be used in all formats. Output that can be ignored includes MSGs, NOTICEs, PUBLIC messages, INVITEs, ALL or NONE. Preceding a type with a "-" indicates removal of ignoring of that type of message. /IGNORE *@cheshire.oxy.edu ALL *** Ignoring ALL messages from *@CHESHIRE.OXY.EDU /IGNORE *** Ignorance list: *** *@CHESHIRE.OXY.EDU ALL /IGNORE *@cheshire.oxy.edu NONE *** *@cheshire.oxy.edu removed from ignorance list 2.3 Channels and Public Conversations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ On IRC, there are a lot of places where you can "hang out"; those places are called 'channels', (most of the information in this section can also be obtained by issuing "/HELP CHANNEL"). You can compare conversations on a channel to a conversation among a group of people: you see/hear everything that is said, and you can reply to anything that's said. What you type is received by everyone who's willing to listen - and everyone who is late will not hear what was said before, unless repeated by one of the ones who were there. (Who said "real life" ?) All channels on IRC have names: a "#" sign followed by some kind of text-string, like "#C++" or "#Asians" or "#EU-Opers". Usually, the name of the channel will indicate the type of conversation that's going on in there. Don't count on it, though. Table 6: Channel commands -------------------------- Keyword Action ~~~~~~~ ~~~~~~ LIST lists channels, number of users, topic NAMES shows the nicknames of the users on each channel JOIN sets your current channel, (same as CHANNEL) WHO gives a listing of users INVITE sends an invitation to another user LEAVE leaves a channel, (same as PART) KICK gets rid of someone on a channel TOPIC changes the topic of the channel ME sends anything about you to a channel or QUERY DESCRIBE sends anything about you to a person or channel Every channel has certain characteristics, called channel modes. These will also be explained below. Recall the NAMES and LIST commands; they will show you the names of the existing channels. /LIST [[] ] Lists all current "channels", number of users, and topic. The displayed list may be quite long, so you can limit it using flags. "/LIST -MIN n" for instance removes channels with less than 'n' users of the output. Example: /LIST -MIN 5 *** #aussies 5 *** #amiga 5 Daily Amiga Silence...join&enjoy *** #hottub 21 Imagine sky, high above... *** #tuebingen 11 Happy Borthday CHUCK!!! *** #Christian 6 Jesus! *** #Twilight_ 15 The Oper Bar & Grill *** #initgame 5 More players needed!!!!!!!!!!!! *** #Taiwan 8 Welcome good friends. *** #espanol 6 EMERGENCIA SE Necesitan Mujeres! *** #sherwood 7 *** #francais 6 on apprend le japonais (japanese welcome) /NAMES [[] ] Shows the nicknames of all users on each "channel", (these may be very long. Remember to filter them with "-MIN n" or "-MAX n"). /NAMES -MIN 5 Pub: #twilight> Mycroft @sojge scorpio @Troy @Avalon @Nap phone Merlinus Lumberjak @tzoper Pub: #espanol Cacique Bonjovi leopardo Carina Miguel Cisco r2 Pub: #amiga @gio @Radix @xterm @mama @AmiBot Pub: #aussies @Bleve @GrayElf @Insomniac @Morkeleb @titus Pub: #hottub baby @Aldur KnightOrc @Toasty Gwydion @Belkira @Aiken Edge @Spockobot @Nada @ZBot @Aurik @anna @RedBaron @Katzen @esashi IceWolf @Eniigma @Digger @TheHeck To join in the conversation on a certain channel you may use the JOIN command. /JOIN [] Sets your current channel to the supplied channel. /JOIN #Twilight_Zone *** Nap has joined channel #Twilight_Zone *** Topic: The Gernsback Continuum *** Users on #Twilight_Zone: Nap msa tober phone @julia @SirLance igh @Daemon @Avalon @Waftam @Trillian @tzoper The CHANNEL command has the same effects. Note that if no parameters are given, your current channel is displayed. Upon entering a channel, you are given useful details about it: list of users talking in that channel, topic... Joining a channel does not cause you to leave your previous channel unless NOVICE is set to ON. See "/HELP SET NOVICE". Once in a channel, you may wish to get a detailed list of the people IRCing inside. That's where the WHO command comes in handy: /WHO [|] Gives a listing of users. "/WHO *" for the list of users in your current channel. /WHO #Twilight_Zone Channel Nickname S User@Host (Name) #Twilight_ Nap H* pioch@poly.polytechnique.fr (Quidquid latine dictum sit, altum viditur) #Twilight_ msa H msa@tel1.tel.vtt.fi (Markku Savela) #Twilight_ tober H ircuser@kragar.eff.org (tober) #Twilight_ phone H mrgreen@munagin.ee.mu.OZ.AU (Third row seats to the Cure? WHO ME? nah.. *grin*) #Twilight_ julia G*@ julie@turing.acs.Virginia.EDU ( Future graduate of ACME Looniversity) #Twilight_ SirLance G*@ lancelot@tdsb-s.mais.hydro.qc.ca (Sir Lancelot) #Twilight_ igh G igh@micom1.servers.unsw.EDU.AU (igh) #Twilight_ Daemon G*@ frechett@spot.Colorado.EDU (-=Runaway Daemon=-) #Twilight_ Avalon H*@ avalon@coombs.anu.edu.au (Avalon...) #Twilight_ Waftam G*@ danielce@munagin.ee.mu.OZ.AU (Daniel Carosone) #Twilight_ Trillian G*@ hrose@rocza.eff.org ( I turn to stone when you are gone ) #Twilight_ tzoper H*@ tzoper@azure.acsu.buffalo.edu (/msg tzoper help) The first field is the current channel, then nickname, status, real name (in internet user@host form), and a small witty comment you can set yourself with the environment variable IRCNAME, (this will be detailed in section 2.8). Status indicates if a user is "H"ere or "G"one, (see AWAY), if IRCop ("*"), and/or chanop ("@"). It is also possible, when you are already on a channel, to ask someone to join your channel. The command is called INVITE. /INVITE [] Invites another user to a channel. If no channel is specified, your current channel is used. /INVITE Nap *** Inviting Nap to channel #Twilight_Zone If you receive an INVITE message, you can type "/JOIN -INVITE" to join the channel to which you were last invited, or simply "/JOIN ". To leave a channel, just issue a LEAVE command, (PART has the same effects): /LEAVE Leave a channel. /LEAVE #Twilight_Zone *** Nap has left #Twilight_Zone Well, you guessed it, if there is a way to invite someone on a channel, there's also the possibility to KICK someone out of it, for example if this person is behaving like a jerk, annoying people or flooding the channel with unwanted information: /KICK [] Kicks named user off a given channel. Only 'channel operators' are privileged to use this command. /KICK #Twilight_Zone Target *** Target has been kicked off channel #Twilight_Zone by Nap Channels have topics, that indicate the current topic of conversation. You can change this topic on a channel with the TOPIC command. /TOPIC [[] ] Changes the topic for the channel. /TOPIC The silent channel. *** Nap has changed the topic on channel #EU-Opers to The silent channel. At times, you may want to send a description of what you are doing or how you are feeling or just anything concerning you to the current channel or query. It is absolutely good style to not forget the period at the end of the sentence! /ME Tells the current channel or query about what you are doing. /ME opens up the fridge. * Nap opens up the fridge. You can also use your own nickname as command, i.e. you can type the line with a leading slash: /Nap reaches out for the orange juice. * Nap reaches out for the orange juice. The same goal can be achieved towards a specific nickname using: /DESCRIBE | Sends anything concerning you to the or you pass as first argument. (Note: The look of the result depends on each client version, and might not be exactly