		BotNET README
		-------------

Introduction ->
------------

- What is a Botnet?

A Botnet is a network of IRC bots that communicate with one
another. They share a means of communication whereby all
bots speak to one another and exchange information. They
are useful for keeping and maintaining a channel by acting
as a group of channel bots that work together with a common
goal. Say, for instance, you have one IRC bot keeping a channel
and a netsplit occurs or the bot dies for some reason. Immediately
the channel becomes chaotic and anarchic without an IRC bot
keeping the peace. With a Botnet, even if an IRC bot dies,
there still remains the rest of the bots on the Botnet to
continue maintaining the channel and the loss of the one
bot means nothing as the other bots do its exact same job.

- Why use this Botnet over others?

BotNET is an extremely powerful Botnet that has dozens of
capabilities and functionality. BotNET doesn't necessarily
have to run as a Botnet, it can run as a normal IRC bot
and in fact does this by default. It has a massive collection
of functions that can be seen in the BotNET man pages.
When run as a Botnet, BotNET has supreme capabilities that
have never been attempted before in Botnets. When a BotNET
bot is run in Botnet mode, it connects to a BotNET Communication
Stream Server (botserv) that is included in this package. It
uses this server to communicate with the other bots on the
Botnet. The difference here is that not only can it do
whatever any other Botnet can do, but it also uses this
stream of communication with it's added IRC Stand-alone bot
functionality. For instance, if you add a user to the bot,
immediately, all other bots connected to the database add
this user to their local databases and a global-wide Botnet
database is maintained. So you can use any one of the bots
on the Botnets for anything that you so desire. This
powerful feature makes BotNET very predominant over other
Botnets.

Usage ->
-----

- Running the bot in BotNET mode.

In order to get your bot to be a node of a Botnet, you
must either force the bot to connect to an already existing
BotNET Communication Stream Server (botserv) or run this server
yourself. botserv can be found in the same directory from where
you ran the bot (INSTALLDIR/bin).
To run it using an existing botserv type: (in the bin directory)
./bot -D <host.running.botserv.com> -P <port>
To run it using botserv running on your local machine:
./botserv
./bot -D localhost -P <port>

The bot never needs command-line arguments if you have
configured the config.h file fully.
A complete summary of all command-line arguments can be
found in the BotNET man pages.

NOTE: If you load more than 1 bot on an irc server at once,
some servers will not allow the bots to interface with the
server properly. Therefore, the bot will continuously
try to resend the registration information to the server.
If this happens, don't try running more than 1 bot on this
server.

- Talking with the bot.

Once the bot is connected, it will automatically join
a channel that was specified either in the config.h file
before compiling or with the: -c <channel> command-line
argument.
Once the bot is connected simple ask it for it's command
menu by typing: /msg botnick help

- Identifying to the bot.

In order for the bot to do any actions that you request
of it you must first authenticate, to show that you
have access to it. This is basically a security measure.
In order to identify to the bot you must first add an
initial nickname and password that can access this bot.
Go to the db/ directory and read the README.NOW file
for information on how to do this.
Once you have added yourself to the users database,
identify yourself to the bot by typing:
/msg botnick identify <password>
where password is the password you entered in the users
file.

- Adding a new user once you have identified.

Now that you have identified to the bot, you will
want to add new users that can access the bot directory
from the bot and without having to edit the database
directly like was done in the previous segment.
First, you must choose an Administrator Password.
This password will be used when adding and deleting
users from the database and can be configured in the
config.h file before compiling. Once you have an
admin password set, type:
/msg botnick adduser <nickname> <password> <admin password>
where nickname is the nick to add, password is the password
for that nickname and admin password is your Administrator
Password.

- Causing the entire Botnet to perform a function.

By default, even if the bot is in BotNET mode, functions
such as: JOIN, PART, MODE, INVITE etc. are executed
only by the bot that you asked to execute it from.
In BotNET mode, without doing anything special, the
BotNET automatic database update feature exists,
whereby when a database change is made such as with
the commands: ADDUSER, DELUSER, MEMO etc. functions,
the database is updated by all bots across the entire Botnet.
If you want to cause all the bots on the Botnet to
execute a certain command like the commands spoken
about at the beginning of this segment, you must
add a suffix to the end of each command call - the
suffix 'global'. For instance if you wanted all of
the bots to part a channel you would, after identifying
to one of the bots, type: /msg botnick part <channel> global
The suffixed word 'global' tells the bot to notify all
of the rest of the bots to perform that action.

- Causing the bot to use raw server commands.

If you want the bot to perform an action and that action
is not in the bots command library, ie: there is no command
that will cause the bot to perform it, you can construct the
command yourself by telling the bot to execute a raw server
command. For instance, if you wanted to bot to greet a channel
you could use:
/msg botnick raw PRIVMSG #channel: hello all
You can even perform raw commands across a botnet, with:
/msg botnick raw PRIVMSG #channel: hello all global
The suffixed word 'global' tells the bot to notify all
of the rest of the bots on the botnet to perform that action.
The suffix 'global' can also be used in regular bot
commands such as: JOIN, PART, MODE, INVITE and so on.

- Disabling logging.

In order to disable logging simply delete the
logs/channel.log file in the installation directory.

EOF
