Why not adopt me?
NAME
Bot::Cobalt - IRC darkbot-alike plus plugin authoring sugar
SYNOPSIS
## Set up example confs and a simple ~/.cobalt2rc :
sh$ cobalt2-installer
sh$ cobalt2 --help
## Launch in foreground:
sh$ cobalt2 --nodetach
## Launch in background:
sh$ cobalt2
DESCRIPTION
Bot::Cobalt is the second generation of the (previously not released on CPAN) cobalt IRC bot.
Cobalt was originally a Perl reimplementation of Jason Hamilton's darkbot (darkbot's last release was in 2001). Bot::Cobalt is a much-improved (and CPAN-able!) revision, providing a pluggable IRC bot framework coupled with a core set of plugins replicating classic darkbot and Cobalt behavior.
The included plugin set provides a wide range of functionality; see "Included plugins" below.
IRC connectivity and protocol details are handled via POE::Component::IRC; the bot can comfortably manage multiple servers/networks (referred to as "contexts").
Bot::Cobalt tries to be friendly to developers. The bridge to POE::Component::IRC exists as a plugin and can be easily subclassed or replaced entirely; see Bot::Cobalt::IRC.
Plugin authoring is intended to be as easy as possible. Modules are included to provide simple frontends to IRC-related utilities, logging, plugin configuration, asynchronous HTTP sessions, data serialization and on-disk databases, and more. See Bot::Cobalt::Manual::Plugins for more about plugin authoring.
Complete documentation is also available in an easy-to-navigate Wiki format at http://www.cobaltirc.org/dev/bots
Initializing a new instance
A Cobalt instance needs its own etc/ and var/ directories. With the default frontend (cobalt2
), these are specified in a simple 'rcfile' for each particular instance.
sh$ cobalt2-installer
cobalt2-installer
will ask some questions, initialize a new rcfile for an instance and try to create the relevant directory layout with some example configuration files.
You can, of course, run multiple instances with the default frontend; each just needs its own rcfile:
sh$ cobalt2-installer --rcfile=${HOME}/cobalts/mycobalt.rc
sh$ cobalt2 --rcfile=${HOME}/cobalts/mycobalt.rc
After reviewing/editing the example configuration files, you should be ready to try starting your Cobalt instance:
## Launch in foreground with verbose debug output:
sh$ cobalt2 --nodetach --debug
## Launch in background with configured log options:
sh$ cobalt2
Included plugins
The example etc/plugins.conf
installed by cobalt2-installer
has most of these:
Bot::Cobalt::Plugin::Alarmclock -- IRC highlight timers
Bot::Cobalt::Plugin::Auth -- User authentication
Bot::Cobalt::Plugin::Games -- Simple IRC games
Bot::Cobalt::Plugin::Info3 -- Flexible text-triggered responses
Bot::Cobalt::Plugin::Master -- Simple bot control from IRC
Bot::Cobalt::Plugin::PluginMgr -- Load/unload plugins from IRC
Bot::Cobalt::Plugin::RDB -- "Random stuff" databases for quotebots or randomized chatter on a timer
Bot::Cobalt::Plugin::Extras::DNS -- DNS lookups
Bot::Cobalt::Plugin::Extras::Karma -- Karma bot
Bot::Cobalt::Plugin::Extras::Money -- Currency conversion via WebServiceX
Bot::Cobalt::Plugin::Extras::Relay -- Cross-network relay
Bot::Cobalt::Plugin::Extras::Shorten -- Shorten URLs via Metamark
Bot::Cobalt::Plugin::Extras::TempConv -- Temperature units conversion
SEE ALSO
The core pieces of Bot::Cobalt are essentially sugar over these two POE Components:
POE::Component::Syndicator (and Object::Pluggable)
Consult their documentation for all the gory details.
Logging facilities are provided by Log::Handler.
AUTHOR
Jon Portnoy <avenj@cobaltirc.org>
Licensed under the same terms as Perl.