#!/usr/bin/perl
use warnings;
use strict;
use App::Bot::BasicBot::Pluggable;
my $app = App::Bot::BasicBot::Pluggable->new_with_options();
$app->run();
__END__
=head1 NAME
bot-basicbot-pluggable - A standard Bot::BasicBot::Pluggable script
=head1 VERSION
version 0.98
=head1 DESCRIPTION
This script acts as standard interface for Bot::BasicBot::Pluggable,
a generic framework for writing pluggable IRC bots in perl. It
enables the user to administrate a full-fledged bot without writing
any perl code.
=head1 SYNOPSIS
bot-basicbot-pluggable --nick MyBot --server irc.perl.org
=head1 OPTIONS
=over 4
=item --server
The server to connect to. Defaults to I<localhost>.
=item --configfile FILE
Read config options from specified FILE. For a discussion of possible
value and format refer to the section CONFIGFILE. The default to read
the configfile found by L<Config::Find>.
=item --logconfig FILE
The logging configuration will be read from the specified file.
Please refer to L<Log::Log4perl::Config> for its format. The paramter
loglevel will be ignored if this options is supplied.
=item --loglevel LEVEL
Sets the bots loglevel to one of the following levels in decreasing
order of output: trace, debug, info, warn, error or fatal. Defaults
to warn.
=item --nick NICKNAME
Nickname to use. Defaults to I<basicbot>.
=item --channel CHANNELNAME
Channel to connect to. This paramter may be provided several times.
You do not have to prefix the channel name with a hash symbol, which
would have to be escaped in shell. It's automatically added for
you.
=item --password
Sets the admin password of the I<Auth> module. This also loads the
I<Auth> module implicitly. Please be warned that this password will
probably been seen on any process listing as on I<ps> or I<top>.
=item --module
Modules to load. This paramter may be profided several times. You
can call --list-modules to get a list of all available modules. If
you do not define any module via this option, I<Auth> and I<Loader>
are loaded by default.
=item --list-modules
Lists all installed modules and exits afterwards. No bot is started.
=item --list-stores
Lists all installed storage modules and exits afterwards. No bot is
started.
=item --store
Defines which storage module is used to save module settings. The
default is I<Memory>, which does not save any settings between
sessions but does neither leave any files nor need any special
settings.
This options take a string in the form I<key>=I<value> and can be
specified multiple times. The value of the key I<type> define which
storage backend to load, all other paramters are passed the the
object constructor as hash reference.
For example:
./bot --store type=Deep --store file=foo.deep
That command will create an L<Bot::BasicBot::Pluggable::Store::Deep>
object and pass C<file =E<gt> 'foo.deep'> to its constructor.
=item --charset
Charset to use for the bot. Defaults to I<utf8>, but you can use
any encoding listed in L<Encode>. The IRC protocol doesn't define
a specific character-set to use. This presents a big problem,
because if you do not use the same as everybody else in the channel
you just receive garbage.
=item --port
Port to connect to on target host. This defaults to the irc standard
port 6667. You won't need to define this in most cases.
=item --command-line
The bot does not connect to any irc server, but will wait on stdin on
commands from the user. This mode won't actually work with a lot of irc
related modules like ChanOp.
=back
=head1 CONFIGFILE
The bot read a configfile either found by L<Config::Find> (usually
named ~/.bot-basicbot-pluggable.yaml) or specified on the comamnd
line via I<--configfile> on startup. The file should be a synatctical
correct yaml file with a hash as its first level element. It
understands every option listed above and the special settings
paramter, which is a hash, where the keys are module names and the
value is a hash of configurable module settings. Easier to show
than to explain:
---
server: host
nick: bot
settings:
Karma:
self_ignore: 0
store:
type: Deep
file: foo.deep
All modules listed under settings are also loaded on startup.
Please remember that you have to escape hash (or pound) signs in YAML:
---
channel:
- '#botzone'
=head1 AUTHOR
Mario Domgoergen <mdom@cpan.org>
=head1 SEE ALSO
L<Bot::BasicBot::Pluggable>
=head1 COPYRIGHT & LICENSE
Copyright 2005-2009 Mario Domgoergen.
This program is free software; you can redistribute it and/or
modify it under the terms of either:
=over 4
=item * the GNU General Public License as published by the Free
Software Foundation; either version 1, or (at your option) any
later version, or
=item * the Artistic License version 2.0.
=back
=cut