Adam
view release on metacpan or search on metacpan
"Filter::Simple" : "0",
"MooseX::Aliases" : "0.10",
"MooseX::Declare" : "0.34",
"MooseX::Getopt" : "0.37",
"MooseX::LogDispatch" : "1.2002",
"MooseX::POE" : "0.214",
"MooseX::SimpleConfig" : "0.09",
"POE::Component::IRC" : "6.64",
"Sub::Identify" : "0.04",
"aliased" : "0.30",
"namespace::autoclean" : "0.12"
}
},
"test" : {
"requires" : {
"Test::Deep" : "0.103",
"Test::More" : "0.94"
}
}
},
"provides" : {
Filter::Simple: '0'
MooseX::Aliases: '0.10'
MooseX::Declare: '0.34'
MooseX::Getopt: '0.37'
MooseX::LogDispatch: '1.2002'
MooseX::POE: '0.214'
MooseX::SimpleConfig: '0.09'
POE::Component::IRC: '6.64'
Sub::Identify: '0.04'
aliased: '0.30'
namespace::autoclean: '0.12'
resources:
IRC: irc://irc.perl.org/#ai
IRC_user: Getty
bugtracker: https://github.com/perigrin/adam-bot-framework/issues
homepage: https://github.com/perigrin/adam-bot-framework
repository: https://github.com/perigrin/adam-bot-framework.git
version: '1.003'
x_Dist_Zilla:
perl:
version: '5.036000'
Makefile.PL view on Meta::CPAN
"Filter::Simple" => 0,
"MooseX::Aliases" => "0.10",
"MooseX::Declare" => "0.34",
"MooseX::Getopt" => "0.37",
"MooseX::LogDispatch" => "1.2002",
"MooseX::POE" => "0.214",
"MooseX::SimpleConfig" => "0.09",
"POE::Component::IRC" => "6.64",
"Sub::Identify" => "0.04",
"aliased" => "0.30",
"namespace::autoclean" => "0.12"
},
"TEST_REQUIRES" => {
"Test::Deep" => "0.103",
"Test::More" => "0.94"
},
"VERSION" => "1.003",
"test" => {
"TESTS" => "t/*.t"
}
);
Makefile.PL view on Meta::CPAN
"MooseX::Declare" => "0.34",
"MooseX::Getopt" => "0.37",
"MooseX::LogDispatch" => "1.2002",
"MooseX::POE" => "0.214",
"MooseX::SimpleConfig" => "0.09",
"POE::Component::IRC" => "6.64",
"Sub::Identify" => "0.04",
"Test::Deep" => "0.103",
"Test::More" => "0.94",
"aliased" => "0.30",
"namespace::autoclean" => "0.12"
);
unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
delete $WriteMakefileArgs{TEST_REQUIRES};
delete $WriteMakefileArgs{BUILD_REQUIRES};
$WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs;
}
delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
git clone https://github.com/perigrin/adam-bot-framework.git
cd adam-bot-framework
cpanm --installdeps .
```
## Basic Usage
```perl
package MyBot;
use Moses;
use namespace::autoclean;
server 'irc.perl.org';
nickname 'mybot';
channels '#bots';
event irc_bot_addressed => sub {
my ($self, $nickstr, $channel, $msg) = @_[OBJECT, ARG0, ARG1, ARG2];
my ($nick) = split /!/, $nickstr;
$self->privmsg($channel => "$nick: Hello!");
};
- **Command-line options** - Built-in support via MooseX::Getopt
- **Logging** - Configurable logging via MooseX::LogDispatch
## IO::Async Support
You can use IO::Async as the event loop (requires IO::Async::Loop::POE):
```perl
package AsyncBot;
use Moses;
use namespace::autoclean;
server 'irc.perl.org';
nickname 'asyncbot';
channels '#ai';
event irc_join => sub {
my ( $self, $nickstr, $channel ) = @_[ OBJECT, ARG0, ARG1 ];
my ($nick) = split /!/, $nickstr;
return unless $nick eq $self->get_nickname;
$self->privmsg( $channel => "Hello, artificial humans!" );
requires 'MooseX::POE', '0.214';
requires 'namespace::autoclean', '0.12';
requires 'MooseX::Aliases', '0.10';
requires 'POE::Component::IRC', '6.64';
requires 'MooseX::Getopt', '0.37';
requires 'MooseX::SimpleConfig', '0.09';
requires 'MooseX::LogDispatch', '1.2002';
requires 'MooseX::Declare', '0.34';
requires 'aliased', '0.30';
requires 'Sub::Identify', '0.04';
requires 'Filter::Simple', '0';
ex/ai-bot.pl view on Meta::CPAN
return $rows > 0;
}
__PACKAGE__->meta->make_immutable;
}
# --- The IRC Bot ---
package BertBot;
use Moses;
use namespace::autoclean;
use IO::Async::Loop::POE;
use Future::AsyncAwait;
use Net::Async::MCP;
use MCP::Server;
use Module::Runtime qw( use_module );
use Langertha::Raider;
server ( $ENV{IRC_SERVER} || 'irc.perl.org' );
nickname ( $BOT_NICK );
channels ( $ENV{IRC_CHANNELS} ? split(/,/, $ENV{IRC_CHANNELS}) : '#ai' );
ex/async.pl view on Meta::CPAN
#!/usr/bin/perl
package AsyncBot;
use Moses;
use namespace::autoclean;
server 'irc.perl.org';
nickname 'adam-async-bot';
channels '#ai';
event irc_join => sub {
my ( $self, $nickstr, $channel ) = @_[ OBJECT, ARG0, ARG1 ];
my ($nick) = split /!/, $nickstr;
return unless $nick eq $self->get_nickname;
$self->privmsg( $channel => "Hello, artificial humans!" );
lib/Adam.pm view on Meta::CPAN
package Adam;
# ABSTRACT: The patriarch of IRC Bots
our $VERSION = '1.003';
use MooseX::POE;
use namespace::autoclean;
use POE::Component::IRC::Common qw( :ALL );
use POE qw(
Component::IRC::State
Component::IRC::Plugin::PlugMan
Component::IRC::Plugin::Connector
Component::IRC::Plugin::ISupport
Component::IRC::Plugin::NickReclaim
Component::IRC::Plugin::BotAddressed
Component::IRC::Plugin::AutoJoin
lib/Adam/Logger/API.pm view on Meta::CPAN
package Adam::Logger::API;
# ABSTRACT: API Role for the Adam logger
our $VERSION = '1.003';
use Moose::Role;
use namespace::autoclean;
requires qw(
log
debug
info
notice
warning
error
critical
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
lib/Moses.pm view on Meta::CPAN
Moses - A framework for building IRC bots quickly and easily.
=head1 VERSION
version 1.003
=head1 SYNOPSIS
package SampleBot;
use Moses;
use namespace::autoclean;
server 'irc.perl.org';
nickname 'sample-bot';
channels '#bots';
has message => (
isa => 'Str',
is => 'rw',
default => 'Hello',
);
t/01.simple.t view on Meta::CPAN
use Test::More;
use Test::Deep;
POE::Kernel->run;
{
package SampleBot;
use Moses;
use namespace::autoclean;
server 'irc.perl.org';
nickname 'sample-bot';
channels '#bots';
has message => (
isa => 'Str',
is => 'rw',
default => 'Hello',
);
t/02.override.t view on Meta::CPAN
use Test::More;
use Test::Deep;
POE::Kernel->run;
use POE::Component::IRC::Qnet::State;
{
package QnetBot;
use Moses;
use namespace::autoclean;
sub _build__irc {
POE::Component::IRC::Qnet::State->spawn(
Nick => $_[0]->get_nickname,
Server => $_[0]->get_server,
Port => $_[0]->get_port,
Ircname => $_[0]->get_nickname,
Options => $_[0]->get_poco_irc_options,
Flood => $_[0]->can_flood,
Username => $_[0]->get_username,
( run in 2.116 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )