#!/usr/bin/perl ################### # Pothead the 2nd v1.1 # Iain "Backdraft" Cambridge # wackiebackie@gmail.com ################### use IO::Socket; use POE; require "./hander.pl"; require "./admin.pl"; require "./functions.pl"; require "./commands.pl"; require "./seen.pl"; require "./help.pl"; require "./rss.pl"; print "Loading...\n"; $starttime = time(); %events = ( stdout => "fpstdout", stderr => "fpstderr", error => "fperror", done => "fpdone", died => "fpdied" ); do "bot.conf" or die " $mfail (bot.conf -- $!)\n"; $socket = IO::Socket::INET->new(PeerAddr => $server, PeerPort => $port, Proto => "tcp", Type => SOCK_STREAM); print $socket "user $username\n"; print $socket "nick $nick\n"; foreach (@channels) { print $socket "join $_\n"; } open(LOG,">log.dat") || die("Cannot Open File"); POE::Kernel->run(); while (<$socket>){ POE::Session->create( package_states => [ "main" => [ values(%events) ] ], inline_states => { _start => \&basic($_), } ); } close(LOG); ############# # Basic Stuff ############# sub basic { chop($_); pong($_); if ($debug eq "yes") { print "$_\n"; } $raw = $_; if ($raw =~ /NOTICE/){ hnotice($raw); } if ($raw =~ /JOIN/){ hjoin($raw); } if ($raw =~ /PRIVMSG/){ hmsg($raw, $starttime); } } sub pong { $message = $_[0]; if ($message =~ /^ping/i) { $message =~ s/^ping\s+://; print $socket "PONG :$_"; } }