Originally written mostly by Nemesis][ - (Black Nemesis), with a little help from TheRose
(this classic FAQ dates back to the early 90s; that old version is available here for historical purposes)
revised June 2003 by DiverGuy@EFnet with a little help from Jolo@EFnet
Hint: This is an advanced subject. If you are looking for a quick bot, without being willing to take the time to learn, stop reading now and go outside and play in the street. You will have more success there.
A BOT is like a roBOT, hence the name. Quite simply, a bot is a computer program that logs onto IRC and does things automatically based upon its programming. Technically, any script or client which has automatic responses could be classified as a bot, even your IRC client. Although the most commonly accepted definition of an IRC bot is "an unmanned chat-client which idles on a channel and responds automatically to predefined events".
A group of bots which are linked together is called a network or botnet. These botnets can provide a chat capability similar to IRC but which is independent of IRC. The bot users can DCC chat or telnet into a bot and have conversations with other bot users on the same bot or on other bots which are connected to the same botnet, and not have to worry about server lag or splits.
Although most bots are written and designed for peaceful purposes, there have been bots written or linked as a botnet with malicious intent. These malicious bots can nick-collide, mass flood other users or gain ops during netsplits. It is a cross between these malicious bots and misconfigured peaceful bots which have historically given bots a bad reputation.
Because of this reputation, many IRC servers have banned bots completely. Others have a passive policy which will tolerate peaceful bots but "k-line" or ban misconfigured or abusive bots.
If you are considering using an IRC bot, please realize that this is a very technical subject, and that an improperly configured bot can do more harm to your channel than it will help. Many channel takeovers are the direct result of poorly configured bots. Running bots should not be attempted by the novice IRC user. Likewise, trusting someone you dont know 'well' to run your bot is about as smart as letting someone that you dont know take your girlfriend out on a date.
The most common bot, written in the C programming language, is called an eggdrop and runs as a background task on a UNIX shell, taking advantage of the robustness of that operating system and stable, high-bandwidth 24/7 connections. A Windows version of the eggdrop, known as windrop, is available from Windrop Central. Arguably there is not much reason to run a Windows bot. The windrop bot is as sophisticated (and difficult to configure and maintain) as its UNIX counterpart, yet still may suffer from problems related to the operating system or connection. Perhaps some weak protection is better than none at all, but not if it lulls you into a false sense of security.
Other bots are just elaborate scripts for specific IRC clients such as ircII or mIRC and require a specific chat client to run and connect to IRC. In other words, if you have a 24/7 connection and you run some scripts that give ops etc., you are performing the role of a bot.
Bots were invented to solve several problems which plagued the original IRC users, including establishing and maintaining channel ownership, fending off hostile takeovers during the once feared 'netsplits', and preventing or reducing the effects of flooders.
Some networks have now established channel and nick registration services which eliminate the need for a bot to hold open a channel. Other networks have implemented channel synch, which prevents people from 'hacking' ops on a channel during a netsplit. One network, EFnet, has installed a pseudo-service called CHANFIX which keeps track of ownership without requiring any active registration.
Due to the active effort of the IRC administrators, the original need for bots has been greatly reduced and perhaps eliminated. However, as IRC has evolved, so have bots. While most of the original reasons for bots have been solved, new scripts have been written and bots are now doing a host of other things including: keeping track of the last time a user was seen or spoke in a channel, providing weather reports, offering trivia games and information such as stock quotes, and other uses limited only by your imagination.
Another use for bots is to act as a file server for peer-to-peer sharing of files over the IRC network. While this is not in keeping with the original concept of IRC, it is one branch of evolution which IRC has taken.
Generally bots are quiet, except for when a) someone makes them do or say something or b) something occurs that make the bot react.
An example of this is when someone floods a channel and then is promptly kicked out of the channel and possibly banned as well. You may have seen this happen and thought "Wow! that was a fast kick!" It was probably a bot kick, scripted to automatically protect the channel against flooding.
Two other things to look for are the words "bot" or "srv" in the nickname. Look in the username field or the parentheses at the end of a /whois <nick>. An example of a bot could be:
#junk JunkyBot H@ firstname.lastname@example.org (/msg JunkyBot Hello) #idiots IdiotSrv H@ email@example.com (/msg IdiotSrv Help)
If the network you are on supports services, then that will ensure you own your channel even if you are not there 24/7. In that case you don't need bots at all. Many networks such as EFnet and IRCnet have no services, however, and it then becomes your job to hold your channel by keeping it occupied with people or bots that you trust. For more information, see Why EFnet/IRCnet has no registration services?.
The short answer is, if you need bots to hold your channel, then you don't have what it takes to run a successful channel anyway. After all, why would a visitor come to your channel if it's often empty with just a few bots hanging around? Please don't be offended, 99% of IRC users lack the combination of experience, resources, and patience needed to run a successful channel. Fortunately there are already hundreds of thousands of larger, established channels on hundreds of networks. You'll have more fun and make more friends by chatting on those channels. Then maybe one day when you have at least 10 real live people, not bots, who have 24/7 connections and some IRC experience, then you can band together and start your own new channel.
If you still want to get your own bot after reading the above, then you really must take several things into consideration.
If your host/computer isn't stable, your bot won't be stable. If your bot isn't stable, your channel won't be stable.
Many people attempt to run a bot on their student account (against school policy) that does not allow bots, so the bot gets killed by other students or administrators. Such kills result in an unstable bot that, for all practical purposes, is useless to your channel and will quite possibly cause a conflict between you and your admin. You're far better off renting a shell and running your bot from there.
This requires reading the Message Of The Day (/MOTD) for every server on which you wish to run your bot. Many servers do not allow bots, in fact most of them have a no-bot policy published in their MOTD. If you ignore the "NO BOTS" warning posted on the server you may quickly find yourself or your entire host or domain k-lined (banned) from that server. Getting your entire host/domain in trouble could cause your ISP to cancel your service. Also, you should check the MOTD on your shell (if you are using a UNIX based bot). Many shells have a list of approved servers. Running bots on non-approved servers is often grounds to have your account cancelled as well.
Just this section alone should show you how difficult and complex being a bot owner can be. You MUST follow the rules, and finding out what the rules are is YOUR responsibility as a bot owner.
There are several types of bots available. Which bot you choose will depend on which host you have chosen. To take advantage of the robustness of a UNIX shell, you must know at least some UNIX. It's not rocket science, but it is different from Windows and will take some learning. If the following section sounds like tech jargon, then that's a strong hint that you are not ready yet to run a bot.
Some common bots are: Eggdrop, Energymech, ComBot, and VladBot just to name a few.
Most bot programs come in packages that are fairly easy to install if one has a basic understanding of the language it is written in. Some bots come pre-compiled and ready to run. Many are set up simply by customizing various configuration files, be sure to read the documentation.
Some bots need to be compiled. Most of the time a bot will compile fine; but differences in systems might require you to make changes directly in the code or the 'make' file in order to get your bot up and running. This will require some basic understanding of the language and the logic the program uses.
Here again, you should realize that being a bot-owner is not a simple thing.
Once you have everything compiled and configured, you start your bot. If everything has gone well, your bot will pop onto IRC in the channel(s) you have selected. Be sure to specify only your channels and make sure it is not going to channels where it is not welcome. Nobody likes an uninvited guest, and if you make people upset, then you risk destabilizing your bot and thus your channels.
At this point, you, as owner, need to fine tune the bot. (if you didn't carefully and completely edit your config files) If you are placing the bot in a channel with other bots, you must take care that the bots don't "fight" with each other. An example of this is when someone is actively being opped by one bot while another is actively deopping him. Another example is when 2 or more bots are "locking" different channel modes. When bots disagree on channel settings, it results in a bot-war and a flood of mode changes which makes the channel unstable and unusable for chatting. It also gives bots a bad name.
CAUTION: NEVER download a bot or bot-code from an UNKNOWN source. The possibility of backdoors planted into unknown bots is HIGH. We also STRONGLY RECOMMEND that you are familiar with the language in which your bot is written.
A backdoor/Trojan could allow someone to enter your bot or your account and take it over without your even knowing it occurred. You will suddenly find that your password has been changed and can't get into your own account or your own channel. "Don't download or install ANYTHING until you know what it does." ALWAYS look before you load. This applies not only to bot programs, but to script files as well.
Not as simple as you thought 'eh?