Advertisement
Guest User

Untitled

a guest
Sep 20th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.22 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use warnings;
  4. use strict;
  5. use POE;
  6. use POE::Component::IRC;
  7. sub CHANNEL () { "#channel" }
  8.  
  9. my ($irc) = POE::Component::IRC->spawn();
  10.  
  11.  
  12. POE::Session->create(
  13.   inline_states => {
  14.     _start     => \&bot_start,
  15.     irc_001    => \&on_connect,
  16.     irc_public => \&on_public,
  17.   },
  18. );
  19.  
  20. sub bot_start {
  21.   $irc->yield(register => "all");
  22.   my $nick = 'BBBot';
  23.   $irc->yield(
  24.     connect => {
  25.       Nick     => $nick,
  26.       Username => 'BBBot',
  27.       Ircname  => 'POE::Component::IRC test test test',
  28.       Server   => 'irc.freenode.net',
  29.       Port     => '6667',
  30.     }
  31.   );
  32. }
  33.  
  34. # The bot has successfully connected to a server.  Join a channel.
  35. sub on_connect {
  36.   $irc->yield(join => CHANNEL);
  37. }
  38.  
  39. sub on_public {
  40.   my ($kernel, $who, $where, $msg) = @_[KERNEL, ARG0, ARG1, ARG2];
  41.   my $nick    = (split /!/, $who)[0];
  42.   my $channel = $where->[0];
  43.   my $ts      = scalar localtime;
  44.   print " [$ts] <$nick:$channel> $msg\n";
  45.   if (my ($rot13) = $msg =~ /^rot13 (.+)/) {
  46.     $rot13 =~ tr[a-zA-Z][n-za-mN-ZA-M];
  47.     $irc->yield(privmsg => CHANNEL, $rot13);
  48.   }
  49.   elsif($msg =~ /!say /)
  50.   {
  51.     $irc->yield(privmsg => CHANNEL, "$'"); #was a test being silly
  52.   }
  53. }
  54. $poe_kernel->run();
  55. exit 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement