@ifinfo
This file documents Bobot++ by Clinton Ebadi and Etienne Bernard
-(original author, no longer works on program).
+(The original author who no longer works on the program).
Copyright 2002,2004,2005 Clinton Ebadi
@ifinfo
This document describes Bobot++ by Clinton Ebadi and Etienne Bernard
-(original author, no longer works on program).
+(The original author who no longer works on the program).
This document applies to version 2.2 of the program named
-Bobot++
+Bobot++.
Copyright 2002,2004,2005 Clinton Ebadi
@chapter Configuration
Bobot++ is easy to configure. See the @file{examples} directory for an
-example configuration.
+example configuration.
+
+The main configuration file is @file{bot.conf}. There are several
+auxiliary configuration files (a user list, aliases file, ban list,
+and a script autoexec).
@menu
* Configuration File Placement::
Bobot++ will look in @file{/etc/bobotpp/default/} for its default
config if none is specified on the command line. Put the configuration
files you want to be loaded by default in this directory. If you are
-not root or you want to have your own personal configuration, put it
+not root, or you want to have your own personal configuration, put it
in @file{~/.bobotpp/config/default/}.
@node Configuration Files, , Configuration File Placement, Configuration
@node bot.conf, bot.users, Configuration Files, Configuration Files
@subsection bot.conf
-@menu
-* server syntax::
-* channel syntax::
-@end menu
-
@file{bot.conf} contains key value pairs separated by @code{=}.
@code{<key> = <value>}
configuration variables are listed below in the format ``@var{variable}
<default-value>: description''
+A few of the options have more complex syntax, they are documented in
+their own subsections.
+
+@menu
+* server syntax::
+* channel syntax::
+@end menu
+
@itemize @bullet
@item @var{nickname} <Bobot>: The nickname of the bot (@var{nick} is an
the bot (@var{realname} is an alias for @var{ircname})
@item @var{userlist} <bot.users>: Name of the file where the userlist is
stored
-@item @var{shitlist} <bot.shit>: Name of the file where the shitlist is
-stored
+@item @var{shitlist} <bot.shit>: Name of the file where the shitlist
+(ban list) is stored
@item @var{logfile} <$LOGDIR/bot.log>: Location of the bot logfile
(set this to @file{/dev/null} to disable logging).
-@item @var{server} <None>: This specifies the server to connect
-to. Note that this has a special syntax.
-@item @var{channel} <None>: This specifies a channel the bot will join
-when it starts up. This also has a special syntax.
+@item @var{server} <None>: This specifies the server to which the bot
+will connect. Note that this has a special syntax @pxref{server
+syntax}.
+@item @var{channel} <None>: This specifies the channels the bot will join
+when it starts up. This has a special syntax @pxref{channel
+syntax}.
@end itemize
@node server syntax, channel syntax, bot.conf, bot.conf
@subsubsection server syntax
+The server syntax in @file{bot.conf} allows you to specify an
+alternate port to connect on, and a password to send the server.
+
+You may use more than one server line; Bobot++ will attempt to connect
+to the first one, and will connect to the next one in the list if it
+fails. The bot will continue cycling through the server list until it
+is able to connect to one. There is a command (@code{!cycle}) to make
+the bot to cycle servers.
+
@var{server} = @var{server_name} [@var{port} [@var{password}]]
This will make Bobot++ attempt to connect to @var{server_name} on port
@var{port} with the password @var{password}. @var{server_name} should
be the address of the server. @var{port} and @var{password} are
-optional. You may use more than one server line; Bobot++ will attempt
-to connect to the first one and, if it fails, will connect to the next
-one in the list. There is also a command to cause the bot to cycle
-servers. At the present time Bobot++ cannot connect to more than one
-server at a time. This is a planned feature of 3.0 (which is a very
-long way away; the current structure of the program would make it very
-difficult to add support for connecting to multiple servers at a time
-in a usable manner).
+optional.
@node channel syntax, , server syntax, bot.conf
@subsubsection channel syntax
+The channel syntax in @file{bot.conf} allows you to specify the
+initial modes the bot should set on a channel, the modes the bot
+should maintain, and a key if the channel needs it.
+
+You may have any number of channel lines. When Bobot++ starts it will
+attempt to join and gain operator status in every channel listed.
+
@var{channel} =
@var{name}:@var{initial_modes}:@var{modes_to_keep}:@var{channel_key}
-You may have any number of channel lines. When Bobot++ starts it will
-attempt to join and gain ops in every channel listed. It will join
-@var{name} and set the channel modes to @var{initial_modes}
-(e.g. ``nt'') if it is able to gain operator status. It will then
-maintain @var{modes_to_keep}. If the channel requires a key to enter
-simply set @var{channel_key}. Every argument except for @var{name} is
-optional.
+The bot will join @var{name} and set the channel modes to
+@var{initial_modes} (e.g. ``nt'') if it is able to gain operator
+status. It will then maintain @var{modes_to_keep}. If the channel
+requires a key to enter simply set @var{channel_key}. Every argument
+except for @var{name} is optional.
A few example lines:
-@code{@var{channel} = #foo:nt:nt:bar}
+@example
+@var{channel} = #foo:nt:nt:bar
+@end example
The bot will join @code{#foo} with the channel key @code{bar} and will
then maintain the modes @code{nt}.
-@code{@var{channel} = #bar:::}
+@example
+@var{channel} = #bar:::
+@end example
The bot will join @code{#bar} and will not set any modes nor will it
attempt to maintain any modes.
@section Starting the Bot
The bot is usually installed with the binary name @file{bobotpp}. It
-accepts the following command line arguments:
+accepts the following command line arguments.
@itemize
@item @code{[--help][-h]} - Shows detailed help and exits
There are several user levels available in Bobot++ to provide gradated
access to commands. @command{!adduser} and @file{bot.users} use the
numeric code; Scheme uses the textual name for the level. By default
-(if no catch-all setting is found in @xref{bot.users}.) a user has
-access to commands with the level @code{bot:user-none}.
+(if the user is not found in the userlist) a user has access to
+commands with the level @code{bot:user-none}.
@enumerate 0
A user added via Scheme, the @file{bot.users} file, or
@command{!adduser} may be protected from being deoped, kicked, or
-banned. There are currently no symbolic levels in Scheme; just use the
-numeric code.
+banned. The user list and IRC commands use the numeric codes, Scheme
+uses the symbolic names.
@enumerate 0
-@item No protection
-@item No ban. If a user is banned the bot will unban him..
-@item No kick. The user may still be kicked but the bot will kickban
+@item @code{bot:protection/none} No protection
+@item @code{bot:protection/no-ban} No ban. If a user is banned the bot will unban him..
+@item @code{bot:protection/no-kick} No kick. The user may still be kicked but the bot will kickban
the user who kicked the protected user.
-@item No deop. The bot will ensure that the user always maintains
+@item @code{bot:protection/no-deop} No deop. The bot will ensure that the user always maintains
operator status.
@end enumerate
@section Automatic Op
A user may be automatically given operator status upon entering a
-channel. Set the @var{aop} field to ``0'' to disable auto-op or ``1''
-to enable auto-op.
+channel. Scheme uses the symbolic name, the user list
+(@file{bot.users}) and IRC commands use the numeric value.
+
+@enumerate 0
+@item @code{bot:aop/no} Do not automatically op the user
+@item @code{bot:aop/yes} Do automatically op the user
+@end enumerate
@node Built-In Commands, , Automatic Op, Using the Bot
@section Built-In Commands