# NAME

Bot::Cobalt - IRC darkbot-alike plus plugin authoring sugar

# SYNOPSIS

    ## Set up example confs and a simple ~/.cobalt2rc :
    sh$ cobalt2-installer

    ## Get some assistance:
    sh$ cobalt2 --help
    
    ## Launch in foreground:
    sh$ cobalt2 --nodetach
    
    ## Launch in background:
    sh$ cobalt2

# DESCRIPTION

**Bot::Cobalt** is the second generation of the `cobalt` IRC bot, which was
originally a Perl remiplementation of Jason Hamilton's 90s-era `darkbot`.

Bot::Cobalt provides 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"](#included-plugins) below.

IRC connectivity and protocol details are handled via 
[POE::Component::IRC](https://metacpan.org/pod/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](https://metacpan.org/pod/POE::Component::IRC) exists as a plugin and can be easily subclassed 
or replaced entirely; see [Bot::Cobalt::IRC](https://metacpan.org/pod/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](https://metacpan.org/pod/Bot::Cobalt::Manual::Plugins) for more about plugin authoring.

## Initializing a new instance

A Bot::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](https://metacpan.org/pod/Bot::Cobalt::Plugin::Alarmclock) -- IRC highlight timers

[Bot::Cobalt::Plugin::Auth](https://metacpan.org/pod/Bot::Cobalt::Plugin::Auth) -- User authentication

[Bot::Cobalt::Plugin::Games](https://metacpan.org/pod/Bot::Cobalt::Plugin::Games) -- Simple IRC games

[Bot::Cobalt::Plugin::Info3](https://metacpan.org/pod/Bot::Cobalt::Plugin::Info3) -- Flexible text-triggered responses

[Bot::Cobalt::Plugin::Master](https://metacpan.org/pod/Bot::Cobalt::Plugin::Master) -- Simple bot control from IRC

[Bot::Cobalt::Plugin::PluginMgr](https://metacpan.org/pod/Bot::Cobalt::Plugin::PluginMgr) -- Load/unload plugins from IRC

[Bot::Cobalt::Plugin::RDB](https://metacpan.org/pod/Bot::Cobalt::Plugin::RDB) -- "Random stuff" databases for quotebots 
or randomized chatter on a timer

[Bot::Cobalt::Plugin::Extras::CPAN](https://metacpan.org/pod/Bot::Cobalt::Plugin::Extras::CPAN) -- Query MetaCPAN and 
[Module::CoreList](https://metacpan.org/pod/Module::CoreList)

[Bot::Cobalt::Plugin::Extras::DNS](https://metacpan.org/pod/Bot::Cobalt::Plugin::Extras::DNS) -- DNS lookups

[Bot::Cobalt::Plugin::Extras::Karma](https://metacpan.org/pod/Bot::Cobalt::Plugin::Extras::Karma) -- Karma bot

[Bot::Cobalt::Plugin::Extras::Money](https://metacpan.org/pod/Bot::Cobalt::Plugin::Extras::Money) -- Currency conversion via 
WebServiceX

[Bot::Cobalt::Plugin::Extras::Relay](https://metacpan.org/pod/Bot::Cobalt::Plugin::Extras::Relay) -- Cross-network relay

[Bot::Cobalt::Plugin::Extras::TempConv](https://metacpan.org/pod/Bot::Cobalt::Plugin::Extras::TempConv) -- Temperature units conversion 

## Extensions on CPAN

There are a few externally-distributed plugin sets available 
via CPAN:

[Bot::Cobalt::Plugin::Calc](https://metacpan.org/pod/Bot::Cobalt::Plugin::Calc) -- Simple calculator

[Bot::Cobalt::Plugin::RSS](https://metacpan.org/pod/Bot::Cobalt::Plugin::RSS) -- RSS feed aggregator

[Bot::Cobalt::Plugin::Silly](https://metacpan.org/pod/Bot::Cobalt::Plugin::Silly) -- Very silly plugin set

For debugging or playing with [Bot::Cobalt::DB](https://metacpan.org/pod/Bot::Cobalt::DB) databases, you may want 
to have a look at [Bot::Cobalt::DB::Term](https://metacpan.org/pod/Bot::Cobalt::DB::Term).

# SEE ALSO

[Bot::Cobalt::Manual::Plugins](https://metacpan.org/pod/Bot::Cobalt::Manual::Plugins)

[Bot::Cobalt::Core](https://metacpan.org/pod/Bot::Cobalt::Core)

[Bot::Cobalt::IRC](https://metacpan.org/pod/Bot::Cobalt::IRC)

The core pieces of Bot::Cobalt are essentially sugar over these two 
[POE](https://metacpan.org/pod/POE) Components:

[POE::Component::IRC](https://metacpan.org/pod/POE::Component::IRC)

[POE::Component::Syndicator](https://metacpan.org/pod/POE::Component::Syndicator) (and [Object::Pluggable](https://metacpan.org/pod/Object::Pluggable))

Consult their documentation for all the gory details.

# AUTHOR

Jon Portnoy <avenj@cobaltirc.org>

[http://www.cobaltirc.org](http://www.cobaltirc.org)

Licensed under the same terms as Perl.