From 035b1523b2136f620f1aa161b04c011a30fbc174 Mon Sep 17 00:00:00 2001 From: Michael Andreen Date: Wed, 6 May 2009 23:17:06 +0200 Subject: [PATCH] Converted the .time command --- Commands/PA.pm | 24 ++++++++++++++++++++++++ PA.pm | 22 +--------------------- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/Commands/PA.pm b/Commands/PA.pm index 2440fea..633d2fe 100644 --- a/Commands/PA.pm +++ b/Commands/PA.pm @@ -21,6 +21,7 @@ package NDIRC::Commands::PA; use strict; use warnings; +use feature ':5.10'; use Moose; use MooseX::MethodAttributes; @@ -81,4 +82,27 @@ FROM galaxies WHERE x = ? AND y = ? AND tick = (SELECT max(tick) from galaxies) } } +sub time + : Help(syntax: .time [tick] [timezone] | Gives the time at the specied tick. Assumes GMT if no timezone is given and current tick if no tick is given.) +{ + my ($self, $c, $msg) = @_; + my ($tick,$timezone) = $msg =~ /^(\d+)?\s*(\S+)?$/ or die 'ARGS'; + + eval { + $tick //= $c->model->selectrow_array(q{SELECT tick()}); + $timezone //= 'GMT'; + my $query = $c->model->prepare(q{ +SELECT date_trunc('seconds',now() + (($1 - tick()) || ' hr')::interval) AT TIME ZONE $2 + }); + $query->execute($tick,$timezone); + my $time = $query->fetchrow_array; + $c->reply("Time at tick $tick, timezone $timezone: $time"); + }; + given ($@){ + when(/time zone "(.+?)" not recognized/){ + $c->reply("$1 is not a valid timezone."); + } + die $@ if $@; + } +} 1; diff --git a/PA.pm b/PA.pm index 72050d8..dd3dbb9 100644 --- a/PA.pm +++ b/PA.pm @@ -28,7 +28,7 @@ require Exporter; our @ISA = qw/Exporter/; -our @EXPORT = qw/shipEff shipStop parseValue prettyValue calcXp findCovOpper tick_time/; +our @EXPORT = qw/shipEff shipStop parseValue prettyValue calcXp findCovOpper/; sub shipEff { my ($msg,$command) = @_; @@ -233,24 +233,4 @@ sub findCovOpper { $ND::server->command("notice $ND::nick The planet that cov opped you is one of: $coords"); } -sub tick_time { - my ($msg,$command) = @_; - my $tick = $ND::tick; - my $timezone = 'GMT'; - if ($msg =~ /^(\d+)(?: (\S+))?/){ - $tick = $1 if defined $1; - $timezone = $2 if defined $2; - }elsif ($msg =~ /^(\S+)/){ - $timezone = $1; - }elsif ($msg){ - $ND::server->command("notice $ND::nick syntax: .time [tick] [timezone] | Gives the time at the specied tick. Assumes GMT if no timezone is given and current tick if no tick is given."); - return; - } - my $query = $ND::DBH->prepare(q{SELECT date_trunc('seconds',now() + (($1 - tick()) || ' hr')::interval) AT TIME ZONE $2}); - $query->execute($tick,$timezone); - my $time = $query->fetchrow_array; - $ND::server->command("notice $ND::nick Time at tick $ND::B$tick$ND::O, timezone $ND::B$timezone$ND::O: $ND::B$time$ND::O"); - -} - 1; -- 2.39.2