Adam

 view release on metacpan or  search on metacpan

META.json  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"
         }
      }
   },
   "provides" : {

META.yml  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'
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}

README.md  view on Meta::CPAN

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!");
};

README.md  view on Meta::CPAN

- **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!" );

cpanfile  view on Meta::CPAN

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 )