AnyEvent-IRC-Server

 view release on metacpan or  search on metacpan

examples/sample-ircd.pl  view on Meta::CPAN

);

my $ircd = AnyEvent::IRC::Server->new(
    host         => '127.0.0.1',
    port         => $port,
    'servername' => 'localhost'
);
$ircd->reg_cb(
    daemon_join => sub {
        my ($irc, $nick, $chan) = @_;
        say "join: $nick, $chan";
    },
    daemon_part => sub {
        my ($irc, $nick, $chan) = @_;
        say "part: $nick, $chan";
    },
    daemon_topic => sub {
        my ($irc, $nick, $chan, $topic) = @_;
        say "topic: $nick, $chan, $topic";
    },
    daemon_privmsg => sub {
        my ($irc, $nick, $chan, $text) = @_;
        say "privmsg: $nick, $chan, $text";
    },
    daemon_notice => sub {
        my ($irc, $nick, $chan, $text) = @_;
        say "notice: $nick, $chan, $text";
    },
);
$ircd->run();

print "irc server is ready in irc://0:$port/\n";

AE::cv->recv();

lib/AnyEvent/IRC/Server.pm  view on Meta::CPAN

        ctime        => POSIX::strftime( '%Y-%m-%d %H:%M:%S', localtime() ),
        channel_chars => '#&',
        prepared_cb  => sub {
            my ($self, $host, $port) = @_;
            print "$class is ready on : $host:$port\n";
        },
        @_,
    );

    
    my $say = sub {
        my ($handle, $cmd, @args) = @_;
        my $msg = mk_msg_ex($self->host, $cmd, $handle->{nick}, @args);
        debugf("Sending '%s'", $msg);
        $msg .= $CRLF;
        $handle->push_write($msg)
    };
    my $need_more_params = sub {
        my ($handle, $cmd) = @_;
        $say->($handle, ERR_NEEDMOREPARAMS, $cmd, 'Not enough parameters');
    };



( run in 0.333 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )