
eliza
By:
robn on
Aug 5th, 2012 | syntax:
Perl | size: 0.85 KB | hits: 35 | expires: Never
#!/usr/bin/env perl
use 5.016;
use warnings;
use strict;
use AnyEvent;
use AnyEvent::IRC::Client;
use Chatbot::Eliza;
my $HOST = "localhost";
my $PORT = 6667;
my $NICK = "Jameson";
my $CHANNEL = "#test";
my $eliza = Chatbot::Eliza->new;
my $c = AnyEvent->condvar;
my $timer;
my $con = new AnyEvent::IRC::Client;
$con->reg_cb(
registered => sub {
$con->send_srv(JOIN => $CHANNEL);
},
disconnect => sub {
$c->broadcast;
},
publicmsg => sub {
my $ircmsg = pop @_;
my ($channel, $text) = @{$ircmsg->{params}};
my ($in) = $text =~ m/^$NICK\b.?\s+(.*)/i;
if ($in) {
my $out = $eliza->transform($in);
my (undef, $who) = $con->split_nick_mode($ircmsg->{prefix});
$con->send_srv(PRIVMSG => $CHANNEL, "$who: $out");
}
},
);
$con->connect ($HOST, $PORT, { nick => $NICK });
$c->wait;
$con->disconnect;