Something went wrong. Try again.
Perl game server for TLE Community
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107use 5.10.0;use strict;use warnings;use lib '/home/lacuna/server/lib';use Getopt::Long;
use Lacuna;
my $quiet;GetOptions( 'quiet!' => \$quiet,);
out("Started.");
my $rs = Lacuna->db->resultset("SitterAuths");
my $soon = DateTime->now()->add(days => $rs->AUTH_WARNING_DAYS);my $dtf = Lacuna->db->storage->datetime_parser;
out("Checking for sitter_auths to delete.");# Delete any that have already expired#$rs->search({ expiry => { '<' => $dtf->format_datetime(DateTime->now), }})->delete;
# we do not warn about expired auths since we've already warned them for the# previous AUTH_WARNING_DAYS days.
out("Checking for messages to send.");my $warnings = $rs->search({ expiry => { '<' => $dtf->format_datetime($soon), '>' => $dtf->format_datetime(DateTime->now), }, },{ join => [ 'sitter', 'baby' ], '+select' => [ 'sitter.name', 'baby.name' ], '+as' => [ 'sitter_name', 'baby_name' ],});
my %expiring_sitters;my %expiring_babies;my $now = DateTime->now;while (my $auth = $warnings->next) { my $baby_name = $auth->get_column('baby_name'); my $sitter_name = $auth->get_column('sitter_name'); my %delta = $auth->expiry->subtract_datetime($now)->deltas(); $delta{hours} = int($delta{minutes}/60);#/); $delta{minutes} %= 60; my $expiry = sprintf "%d days, %02d:%02d:%02d", @delta{qw(days hours minutes seconds)};
$expiring_sitters{$baby_name} {$sitter_name} = $expiry; $expiring_babies {$sitter_name}{$baby_name} = $expiry;}
for my $baby_name (sort keys %expiring_sitters) { out("Warning baby ", $baby_name);
my @table = ( [ 'Empire', 'Expiring in' ], map {[ $_ => $expiring_sitters{$baby_name}{$_} ] } sort keys %{$expiring_sitters{$baby_name}} );
Lacuna->db->empire({name => $baby_name})->send_predefined_message( tags => ['Alert'], params => [ @table > 2 ? "Treaties" : "Treaty", @table > 2 ? "multiple" : "a", $baby_name ], filename => 'expiring_sitters.txt', attachments => { table => \@table, }, );}
for my $sitter_name (keys %expiring_babies) { out("Warning sitter ", $sitter_name);
my @table = ( [ 'Empire', 'Expiring in' ], map {[ $_ => $expiring_babies{$sitter_name}{$_} ]} sort keys %{$expiring_babies{$sitter_name}} );
Lacuna->db->empire({name => $sitter_name})->send_predefined_message( tags => ['Alert'], filename => 'expiring_babies.txt', params => [ @table > 2 ? "Treaties" : "Treaty", @table > 2 ? "multiple" : "a", $sitter_name ], attachments => { table => \@table, }, );}
out("Done.");
sub out { unless ($quiet) { say DateTime->now, " ", @_; }}