All pastes #929858 Raw Edit

Stuff

public text v1 · immutable
·published 2008-03-06 02:09 UTC
rendered paste body
#!/usr/bin/perl

BEGIN { 
  local $_ = $0; 
  s#\\#/#g; # those ass backwards \'s annoy me
  m#.*/#; 
  push @INC, $& . "lib"; 
} 

$|++; 

use strict;
use warnings; 

use Carp qw(croak);
use Socket; 

use IRC::Sock; 
use IRC::Parser;

use IRC::Debug; 

use IRC::Sock::Select; 




$\ = "\n";





our $DIE = 0; 
my $i = 0; 


my @IRC; 
push @IRC,
    IRC::Sock->spawn(Host => 'irc.whereiswaldo.org:6667'),
    IRC::Sock->spawn(Host => 'evul.wa.us.severed.org:7002'),
    IRC::Sock->spawn(Host => 'irc.icq.com:6667'); 


#	IRC::Sock->spawn(Host => 'hotspeed.dal.net:6667');

my $Stack = IRC::Sock::Select->new(@IRC);



my $Current = "bleh"; 
my $Debugger = IRC::Debug->toggle(\${IRC[2]}, \$Current, 1); 


my $Parser = IRC::Parser->new; 
for my $fd (@IRC) { print $fd "NICK ubu\nUSER bob \"\" \"\" :unf\n" } 

my %auth; 

my $DIE = 0; 
main:for(;!$DIE;) { 
  my @ready;
  while(@ready = $Stack->select(0.1)) { 
  #  print "\n-- " . @{$ready[0]} . " sock(s) ready\n";
    for my $IRC (@{$ready[0]}) {
	  next 
	    if exists $auth{$IRC}; 
	  print $IRC "NICK ubu\nUSER bob \"\" \"\" :unf\n";
	  $auth{$IRC} = 1; 
	} 
  
    for my $IRC (@{$ready[0]}) {   

      my @all = my($origin, $command, $target, $args, $text) = $Parser->break($IRC->read);
	  next if $origin == 1; 
      $Current = $_;
	  my($nick, $host) = split /!/, $origin 
        if defined $origin; 
	  print "---\n"; 

      my @tmp = qw(origin command target args text); 
      for(@all) { my $t = shift(@tmp); print $t . "\t=\t" . $_ if defined } 	  
	 
      if($command eq 'PING') { print $IRC "PONG :$text"; print "PING? PONG!" } 
      print $IRC "JOIN #Debug,#drugs" if $command eq '005'; 
	  if (defined $nick) { 
        if ($command eq 'PRIVMSG' && $text =~ /^oi$/) { print $IRC "PRIVMSG $target :oi"; warn "Test, testing.. 1, 2, 3..."; } 
        scalar grep {$nick eq $_} qw(aneuryzm hatred phy) or next; 
        if ($text =~ /^\.die\s*(.*)/) { $DIE = 1; print $IRC "QUIT :" . $1; last main; }
        elsif ($text =~ /^\.raw\s*(.*)/i) { print $IRC $1  }
        elsif ($text =~ /^\.eval\s*(.*)/i) { print $IRC "PRIVMSG $target :Perl/IRC::IO Evaluated to $nick: " . (eval $1 || $@ || qq(No Result)) }
        elsif ($text =~ /^\.msg\s*(.*?)\s(.*)/i) {  print $IRC "PRIVMSG $1 :$2" } 
        elsif ($text =~ /^\.notc\s*(.*?)\s(.*)/i) {  print $IRC "NOTICE $1 :$2" } 
      }
    }  
  }
}



__END__


IRC_READ: while(<$IRC>) {
  print; 
  # my($origin, $command, $target, $args, $text) = $IRC->break($_);
  
  my $broken = $IRC->break($_); 
  
  print $broken->[0] . "\n"; 
  
  if($IRC->{command} eq 'PING') { 
  	print "PING? PONG!\n"; 
  	send(IRC, "PONG :" . $IRC->{text} . "\n", 0); 
  } 
  if($IRC->{command} eq '376') { 
  	send(IRC, "JOIN #severed\n", 0); 
  } 
  print "ORIGIN='" . $IRC->{origin} . "'\n", 
  	"COMMAND='". $IRC->{command} . "'\n",
  	"TARGET='" . $IRC->{target} . "'\n", 
  	"ARGUMENTS='" . $IRC->{other} . "'\n",
  	"TEXT='" . $IRC->{text} . "'\n\n";
}