X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=Commands%2FMembers.pm;fp=Commands%2FMembers.pm;h=a2f54eeb061e3990fdce93eb577609e608ff83b0;hb=66ce902aff4400269e2c2de3b9dbeee61448e3d5;hp=0000000000000000000000000000000000000000;hpb=fb91afb326b44a3e46fb92b060696aabc343e1cc;p=NDIRC.git diff --git a/Commands/Members.pm b/Commands/Members.pm new file mode 100644 index 0000000..a2f54ee --- /dev/null +++ b/Commands/Members.pm @@ -0,0 +1,119 @@ +#************************************************************************** +# 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::Commands::Members; + +use strict; +use warnings; +use feature ':5.10'; + +use Moose; +use MooseX::MethodAttributes; + +sub def + : Help(Show current calls) + : Type(member) +{ + my ($self,$c,$msg) = @_; + my $f = $c->model->prepare(q{ +SELECT (c.landing_tick - tick()) AS eta, concat(i.shiptype||'/') AS shiptype + , dc.username +FROM calls c + JOIN incomings i ON i.call = c.id + LEFT OUTER JOIN users dc ON dc.uid = c.dc + JOIN users u ON u.uid = c.member +WHERE open AND (c.landing_tick - tick()) >= 7 +GROUP BY c.id,c.landing_tick,dc.username +ORDER BY c.landing_tick; + }); + $f->execute(); + my $calls = ""; + while (my @row = $f->fetchrow()){ + chop($row[1]); + my $dc = $row[2] // ''; + $calls .= " (Anti $row[1] ETA: $row[0] DC: $dc) |" + } + chop($calls); + if ($msg ne 'q' || length $calls > 0){ + $c->reply("Current calls: $calls"); + } +} + +sub raids + : Help(List currently open raids) + : Type(member) +{ + my ($self,$c,$msg) = @_; + + my $f = $c->model->prepare(q{ +SELECT id FROM raids +WHERE open AND not removed AND tick + waves - 7 > tick() +AND id IN (SELECT raid FROM raid_access WHERE gid = 2) + }); + $f->execute(); + my $calls = ""; + while (my ($raid) = $f->fetchrow()){ + $calls .= " https://nd.ruin.nu/raids/view/$raid |" + } + $calls = "No open future raids" if ($f->rows == 0); + chop($calls); + $c->reply($calls); +} + +sub points + : Help(syntax: .points [nick] | not everyone have access to check for others.) +{ + my ($self,$c,$msg) = @_; + my $f; + my $nick = $c->host; + if ($msg =~ /(\S+)/ && $c->check_user_roles(qw/irc_points_others/)){ + $nick = $1; + $f = $c->model->prepare(q{ +SELECT username, attack_points, defense_points, scan_points, humor_points +FROM users WHERE username ILIKE ? LIMIT 5 + }); + }else{ + $f = $c->model->prepare(q{ +SELECT username, attack_points, defense_points, scan_points, humor_points +FROM users WHERE hostmask ILIKE ? + }); + } + $f->execute($nick); + while (my @row = $f->fetchrow()){ + $c->reply("$row[0] has $row[1] Attack, $row[2] Defense, $row[3] Scan, $row[4] Humor points"); + } +} + +sub sms + : Help(syntax: .sms nick | % can be used for wildcards %arro% will match barrow) + : ACL(irc_sms) +{ + my ($self,$c,$msg) = @_; + my ($nick) = $msg =~ /(\S+)/ or die 'ARGS'; + my $f = $c->model->prepare(q{ +SELECT username,COALESCE(sms,'nothing added') FROM users WHERE username ILIKE ? + }); + if (my ($username,$sms) = $c->model->selectrow_array($f,undef,$nick)){ + $c->reply("$username has sms $sms"); + }else{ + $c->reply("No hit, maybe spelling mistake, or add % as wildcard"); + } +} + +1;