Don't like ads? PRO users don't see any ads ;-)

eliza

By: robn on Aug 5th, 2012  |  syntax: Perl  |  size: 0.85 KB  |  hits: 35  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #!/usr/bin/env perl
  2.  
  3. use 5.016;
  4. use warnings;
  5. use strict;
  6.  
  7. use AnyEvent;
  8. use AnyEvent::IRC::Client;
  9. use Chatbot::Eliza;
  10.  
  11. my $HOST = "localhost";
  12. my $PORT = 6667;
  13. my $NICK = "Jameson";
  14. my $CHANNEL = "#test";
  15.  
  16. my $eliza = Chatbot::Eliza->new;
  17.  
  18. my $c = AnyEvent->condvar;
  19.  
  20. my $timer;
  21. my $con = new AnyEvent::IRC::Client;
  22.  
  23. $con->reg_cb(
  24.         registered => sub {
  25.                 $con->send_srv(JOIN => $CHANNEL);
  26.         },
  27.         disconnect => sub {
  28.                 $c->broadcast;
  29.         },
  30.         publicmsg => sub {
  31.                 my $ircmsg = pop @_;
  32.                 my ($channel, $text) = @{$ircmsg->{params}};
  33.                 my ($in) = $text =~ m/^$NICK\b.?\s+(.*)/i;
  34.                 if ($in) {
  35.                         my $out = $eliza->transform($in);
  36.                         my (undef, $who) = $con->split_nick_mode($ircmsg->{prefix});
  37.                         $con->send_srv(PRIVMSG => $CHANNEL, "$who: $out");
  38.                 }
  39.         },
  40. );
  41.  
  42. $con->connect ($HOST, $PORT, { nick => $NICK });
  43. $c->wait;
  44. $con->disconnect;