X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=Eos.pm;fp=Eos.pm;h=0000000000000000000000000000000000000000;hb=827dca1b13ddf19dce2dee7406888c676ca1fd8a;hp=d397244d122d70bda63d17a4cc3cca2cd027cc52;hpb=734f71c099149b73077c64112bbe15ad14f468a2;p=NDIRC.git diff --git a/Eos.pm b/Eos.pm deleted file mode 100644 index d397244..0000000 --- a/Eos.pm +++ /dev/null @@ -1,163 +0,0 @@ -#************************************************************************** -# 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 * -# the Free Software Foundation; either version 2 of the License, or * -# (at your option) any later version. * -# * -# This program is distributed in the hope that it will be useful, * -# but WITHOUT ANY WARRANTY; without even the implied warranty of * -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# GNU General Public License for more details. * -# * -# You should have received a copy of the GNU General Public License * -# along with this program; if not, write to the * -# Free Software Foundation, Inc., * -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * -#**************************************************************************/ -package NDIRC::Eos; - -use strict; -use warnings; -use feature ':5.10'; - -use Moose; -extends 'NDIRC::Bot'; - -use POE::Session; -use ND::DB; - -my ($tick,$stattick) = DB()->selectrow_array(q{SELECT tick(),max(tick) FROM planet_stats}); -my $last_announcement = 0; - -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+): (.+)$/ && $self->disp->has_command('anon',$channel)){ - my $_ = $1; - my $text = $2; - unless ($irc->is_channel_member($channel,$1) || /(Constructing|Researching)/){ - $msg = ".anon $_ $text"; - } - - } - if ($self->parseCommand($msg,$irc,$nick,$address,$channel,DB())){ - #Command parsed and run successfully - } -}; - - -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 ($self->parseCommand($msg,$irc,$nick,$address,'pm',DB())){ - #Command parsed and run successfully - }else{ - my $disp = $self->disp; - $irc->yield(privmsg => $disp->targets->{def}, chr(3)."04 $nick >> $msg"); - $self->parseCommand("~report_incs $msg",$irc,$nick,' BATCH ',$disp->targets->{def},DB()); - } -}; - -sub irc_join { - my ($self,$sender, $who, $channel) = @_[OBJECT,SENDER, ARG0 .. ARG1]; - my ($nick,$username,$address) = ( split /[!@]/, $who ); - my $irc = $sender->get_heap(); - my $disp = $self->disp; - - my $dbh = DB(); - - if (lc $channel ~~ lc $disp->targets->{members}){ - if (time - $last_announcement < 1){ - $last_announcement = time; - return; - } - my $user = $dbh->selectrow_hashref(q{ -SELECT uid,pid,hostmask,password - ,(SELECT max(time) FROM forum_thread_visits WHERE uid = u.uid) AS last_forum_visit -FROM users u WHERE hostmask = ? - }, undef, $address); - if ($user){ - if ($user->{password} eq ''){ - $irc->yield(privmsg => $disp->targets->{members}, "$nick: Get a new random password with /msg delling !getpass . If you don't know your username, then you can get it with .points"); - } - if ($tick > 36 && not defined $user->{pid}){ - $irc->yield(privmsg => $disp->targets->{members}, "$nick: go to https://nd.ruin.nu/ and enter your coords."); - } - - if (not defined $user->{last_forum_visit}){ - $irc->yield(privmsg => $disp->targets->{members}, "$nick: Go read the forum! https://nd.ruin.nu/forum"); - }else { - my $unread = $dbh->selectrow_hashref(q{SELECT * FROM unread_posts($1)},undef,$user->{uid}); - if ($unread && $unread->{new}){ - $irc->yield(notice => $nick, "$unread->{new} posts since your last forum visit ($unread->{unread} unread posts in total) https://nd.ruin.nu/forum/allUnread"); - } - } - } - if (time - $last_announcement < 2){ - $last_announcement = time; - return; - } - $last_announcement = time; - } -} - -sub refresh { - 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 = $self->disp; - my $dbh = DB(); - - my @row = $dbh->selectrow_array(q{SELECT tick(), max(tick) FROM planet_stats}); - if ($tick != $row[0]){ - $tick = $row[0]; - $irc->yield(privmsg => $disp->targets->{def}, "New tick: $tick"); - } - if (defined $row[1] && $stattick != $row[1]){ - $stattick = $row[1]; - $irc->yield(privmsg => $disp->targets->{members}, "New tick: $stattick"); - } - my $ircreqs = $dbh->prepare(q{SELECT id,username,message,channel FROM irc_requests NATURAL JOIN users WHERE not sent}); - my $upircreq = $dbh->prepare(q{UPDATE irc_requests SET sent = TRUE WHERE id = ?}); - $ircreqs->execute; - 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}"); - $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}"); - } - $upircreq->execute($req->{id}); - } - my $defmissions = $dbh->prepare(q{ -SELECT username,call,tick,dm.fleet,p.value - ,100 * SUM(fs.amount * (metal + crystal + eonium) / 100) / p.value AS value -FROM users u - JOIN current_planet_stats p USING (pid) - JOIN launch_confirmations USING (uid) - JOIN fleets f USING (fid) - JOIN fleet_ships fs USING (fid) - JOIN defense_missions dm ON f.fid = dm.fleet - JOIN ship_stats ss ON fs.ship = ss.name -WHERE NOT dm.announced -GROUP BY username,call,tick,dm.fleet,p.value - }); - my $updefmis = $dbh->prepare(q{UPDATE defense_missions SET announced = TRUE WHERE fleet = ?}); - $defmissions->execute(); - while (my $mission = $defmissions->fetchrow_hashref){ - $irc->yield(privmsg => $disp->targets->{def}, chr(3)."06 $mission->{username} sent def to call $mission->{call}, $mission->{value}% of value (tick $mission->{tick}) https://nd.ruin.nu/calls/edit/$mission->{call}"); - $updefmis->execute($mission->{fleet}); - } -} - -1;