Adam
view release on metacpan or search on metacpan
lib/Adam/Plugin.pm view on Meta::CPAN
package Adam::Plugin;
# ABSTRACT: A base class for Adam/Moses plugins
our $VERSION = '1.003';
use Moose;
use namespace::autoclean;
has bot => (
isa => 'Adam',
is => 'ro',
required => 1,
handles => [
qw(
log
owner
irc
yield
privmsg
nick
)
],
);
has _events => (
isa => 'ArrayRef',
is => 'ro',
traits => ['Array'],
builder => 'default_events',
handles => { _list_events => 'elements' }
);
sub default_events {
[ grep { /^[SU]_\w+/ } shift->meta->get_all_method_names ];
}
sub PCI_register {
my ( $self, $irc ) = splice @_, 0, 2;
my @events = $self->_list_events;
my @s_events = map { s/^S_//; $_ } grep { /^S_/ } @events;
my @u_events = map { s/^U_//; $_ } grep { /^U_/ } @events;
$irc->plugin_register($self, 'SERVER', @s_events) if @s_events;
$irc->plugin_register($self, 'USER', @u_events) if @u_events;
return 1;
}
sub PCI_unregister {
my ( $self, $irc ) = @_;
return 1;
}
sub _default {
my ( $self, $irc, $event ) = @_;
$self->log->notice("_default called for $event");
}
1;
__END__
=pod
( run in 0.642 second using v1.01-cache-2.11-cpan-97f6503c9c8 )