
Infobot::Message - Encapsulate incoming queries

use Infobot::Message;
my $message = Infobot::Message->new();
# These all become available as accessors
$message->init(
addressed => 1,
conduit => $irc_conduit,
context => { channel => '#perl' },
name => 'sheriff',
message => 'Hey purl!',
public => 1,
nick => 'purl',
printable => '[#perl/sheriff] purl: Hey purl!',
);
my $id = $message->id;
$message->say( "Right back at ya, ", $message->name );
$self->stash('pipeline')->process( $message );

These are the attributes a conduit must pass to init, and which other plugins that use Infobot::Message can rely on being set.
If we were specifically spoken to by the user. In situations where the bot is the only possible recipient (say a console conduit), then this should be set to one regardless.
The conduit object which created the message.
Any conduit-specific information (hashref). This should not be relied upon in any place other than the conduit itself - the default for any value you put in should be 0/undef. So, the IRC conduit uses an 'addressing' value in here, which specifies if the current channel requires addressing (set up in the config). It defaults to 0, so any plugin that doesn't deal with IRC doesn't need to care about it.
channel and addressing are the only keys that are currently suggested for use outside of the conduit itself, but PLEASE programme defensively here, and don't rely on ANY value being here...
The text of the message itself
The name (human-readable) of the user talking to us
Our name - please default to the value of $self-stash('config')->{alias}> if your conduit doesn't have this concept.
A nice, loggable text representation of the message text plus some context - for IRC, we use channel name and nick and the message, nicely formatted in one string.
If the comment was made in a 'public' place (IRC channel, for example).

Returns a unique(ish) ID for the message
All the above attributes are also read-only accessors...
Accepts a list of the attributes as described above. Returns 1 on success.
Prints the message in the appropriate conduit, having checked addressing and done some logging