X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=Eos.pm;h=d397244d122d70bda63d17a4cc3cca2cd027cc52;hb=6815b7a875e95937693864b76a028f92ee2cbf35;hp=079b7c9012ddc7acdc00a6f3c54bb369669b8bf5;hpb=0d63bf9da52cdfe2c9d8850b690032ff539b6398;p=NDIRC.git diff --git a/Eos.pm b/Eos.pm index 079b7c9..d397244 100644 --- a/Eos.pm +++ b/Eos.pm @@ -1,5 +1,5 @@ #************************************************************************** -# Copyright (C) 2006 by Michael Andreen * +# Copyright (C) 2009 by Michael Andreen * # * # This program is free software; you can redistribute it and/or modify * # it under the terms of the GNU General Public License as published by * @@ -22,21 +22,23 @@ use strict; use warnings; use feature ':5.10'; +use Moose; +extends 'NDIRC::Bot'; + use POE::Session; -use NDIRC::Misc; use ND::DB; my ($tick,$stattick) = DB()->selectrow_array(q{SELECT tick(),max(tick) FROM planet_stats}); my $last_announcement = 0; -sub irc_public { - my ($sender, $heap, $who, $where, $msg) = @_[SENDER, HEAP, ARG0 .. ARG2]; +after irc_public => sub { + my ($self,$sender, $who, $where, $msg) = @_[OBJECT,SENDER, ARG0 .. ARG2]; my ($nick,$username,$address) = ( split /[!@]/, $who ); my $channel = $where->[0]; my $irc = $sender->get_heap(); - if ($msg =~ /^(\S+): (.+)$/ && $heap->{disp}->has_command('anon',$channel)){ + if ($msg =~ /^(\S+): (.+)$/ && $self->disp->has_command('anon',$channel)){ my $_ = $1; my $text = $2; unless ($irc->is_channel_member($channel,$1) || /(Constructing|Researching)/){ @@ -44,31 +46,31 @@ sub irc_public { } } - if (parseCommand($msg,$irc,$nick,$address,$channel,$heap->{disp},DB())){ + if ($self->parseCommand($msg,$irc,$nick,$address,$channel,DB())){ #Command parsed and run successfully } -} +}; -sub irc_msg { - my ($sender, $heap, $who, $where, $msg) = @_[SENDER, HEAP, ARG0 .. ARG2]; +after irc_msg => sub { + my ($self,$sender, $who, $where, $msg) = @_[OBJECT,SENDER, ARG0 .. ARG2]; my ($nick,$username,$address) = ( split /[!@]/, $who ); my $irc = $sender->get_heap(); - if (parseCommand($msg,$irc,$nick,$address,'pm',$heap->{disp},DB())){ + if ($self->parseCommand($msg,$irc,$nick,$address,'pm',DB())){ #Command parsed and run successfully }else{ - my $disp = $heap->{disp}; + my $disp = $self->disp; $irc->yield(privmsg => $disp->targets->{def}, chr(3)."04 $nick >> $msg"); - parseCommand("~report_incs $msg",$irc,$nick,' BATCH ',$disp->targets->{def},$heap->{disp},DB()); + $self->parseCommand("~report_incs $msg",$irc,$nick,' BATCH ',$disp->targets->{def},DB()); } -} +}; sub irc_join { - my ($sender, $heap, $who, $channel) = @_[SENDER, HEAP, ARG0 .. ARG1]; + my ($self,$sender, $who, $channel) = @_[OBJECT,SENDER, ARG0 .. ARG1]; my ($nick,$username,$address) = ( split /[!@]/, $who ); my $irc = $sender->get_heap(); - my $disp = $heap->{disp}; + my $disp = $self->disp; my $dbh = DB(); @@ -108,12 +110,12 @@ FROM users u WHERE hostmask = ? } sub refresh { - my ($kernel,$heap) = @_[KERNEL,HEAP]; + my ($self,$kernel,$heap) = @_[OBJECT,KERNEL,HEAP]; $kernel->delay( refresh => 60 ); print 'Time: ' . time() . ' Lag: ' . $heap->{connector}->lag() . "\n"; my $irc = $heap->{irc}; - my $disp = $heap->{disp}; + my $disp = $self->disp; my $dbh = DB(); my @row = $dbh->selectrow_array(q{SELECT tick(), max(tick) FROM planet_stats}); @@ -131,7 +133,7 @@ sub refresh { while (my $req = $ircreqs->fetchrow_hashref){ if ($req->{channel} eq 'def'){ $irc->yield(privmsg => $disp->targets->{def}, chr(3)."04 ## $req->{username} via webbie ## >> $req->{message}"); - parseCommand("~report_incs $req->{message}",$irc,$req->{username},' BATCH ',$disp->targets->{def},$heap->{disp},$dbh); + $self->parseCommand("~report_incs $req->{message}",$irc,$req->{username},' BATCH ',$disp->targets->{def},$dbh); }elsif(exists $disp->targets->{$req->{channel}}){ $irc->yield(privmsg => $disp->targets->{$req->{channel}}, "<$req->{username} via webbie> $req->{message}"); }