#!/usr/bin/perl use strict; use POE; use POE::Component::IRC; my $nick = 'mrtgbot'; sub _start { my ($kernel) = $_[KERNEL]; $kernel->alias_set('anmrtgbot'); $kernel->post('mrtgbot', 'register', 'all'); $kernel->post('mrtgbot', 'connect', { Debug =>0, Nick => $nick, Server => $ARGV[0] || 'irc.slash-node.org', Port => $ARGV[1] || 6667, Username => 'mrtgbot', Ircname => 'mrtgbot', } ); } sub irc_001 { my ($kernel) = $_[KERNEL]; $kernel->post('mrtgbot', 'stats', 'm'); } sub irc_212 { #from http://vengeance.et.tudelft.nl/~smoke/irc-messages.txt # ; RPL_STATSCOMMANDS # (212 . "%c %n %b %r") my ($kernel, $from, $values) = @_[KERNEL, ARG0, ARG1]; my($command, $count, $bytecount, $remotecount) = ($values =~ /^([A-Z]*) (\d+) (\d+) (\d+)$/i ); if ($ARGV[2] eq $command) { print "$count\n$remotecount\n"; } } sub irc_219 { my ($kernel) = $_[KERNEL]; $kernel->post( 'mrtgbot', 'quit', "I'll be back" ); $kernel->alias_remove('anmrtgbot'); exit 0; } sub irc_disconnected { my ($server) = $_[ARG0]; print "Lost connection to server $server.\n"; } sub irc_error { my $err = $_[ARG0]; print "Server error occurred! $err\n"; } sub irc_socketerr { my $err = $_[ARG0]; print "Couldn't connect to server: $err\n"; } sub _stop { my ($kernel) = $_[KERNEL]; print "Control session stopped.\n"; $kernel->post( 'mrtgbot', 'quit', "I'll be back" ); $kernel->alias_remove('anmrtgbot'); } POE::Component::IRC->spawn('mrtgbot') or die "Can't instantiate new IRC component!\n"; POE::Session->new('main' => [qw(_start _stop irc_001 irc_disconnected irc_socketerr irc_error irc_212 irc_219)] ); $poe_kernel->run(); exit 0;