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";
}