X-Git-Url: https://ruin.nu/git/%3CTMPL_VAR%20NAME=PAGE%3E?a=blobdiff_plain;f=Commands%2FMembers.pm;h=f16922e019d0af30eee77a7ecfc79f11b85933b4;hb=e2e3961d70af6daf73c206ee09d6c154f8893087;hp=44cfe79d68ac3c62863fb2ec0d2c8f7d017af08f;hpb=0d6e6e233601ba9b1dd9fe874e804424a10fa09c;p=NDIRC.git
diff --git a/Commands/Members.pm b/Commands/Members.pm
index 44cfe79..f16922e 100644
--- a/Commands/Members.pm
+++ b/Commands/Members.pm
@@ -17,137 +17,140 @@
# 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;
+use MooseX::Declare;
+use NDIRC::Dispatcher;
-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
+command def => {
+ help => q(Show current calls),
+ type => q(member),
+}, class extends NDIRC::Command {
+ method execute($c,$msg) {
+ my $f = $c->model->prepare(q{
+SELECT (c.landing_tick - tick()) AS eta
+ ,array_to_string(array_agg(i.shiptype),'/') AS shiptype
+ ,dc.username
FROM calls c
- JOIN incomings i ON i.call = c.id
+ JOIN incomings i USING (call)
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
+WHERE status = 'Open' AND (c.landing_tick - tick()) >= 7
+GROUP BY call,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");
+ });
+ $f->execute();
+ my $calls = "";
+ while (my @row = $f->fetchrow()){
+ 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) = @_;
+command raids => {
+ help => q(List currently open raids),
+ type => q(member),
+}, class extends NDIRC::Command {
+ method execute($c,$msg) {
- my $f = $c->model->prepare(q{
+ 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 |"
+AND id IN (SELECT raid FROM raid_access WHERE gid = 'M')
+ });
+ $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);
}
- $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{
+command points => {
+ help => q(syntax: .points [nick] | not everyone have access to check for others.),
+}, class extends NDIRC::Command {
+ method execute($c,$msg) {
+ my $f;
+ my $nick = $c->uid;
+ 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{
+ });
+ }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");
+FROM users WHERE uid = ?
+ });
+ }
+ $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{
+command sms => {
+ help => q(syntax: .sms nick | % can be used for wildcards %arro% will match barrow),
+ acl => q(irc_sms),
+}, class extends NDIRC::Command {
+ method execute($c,$msg) {
+ my ($nick) = $msg =~ /(\S+)/ or die 'ARGS';
+ my $f = $c->model->prepare(q{
SELECT username,COALESCE(sms,'nothing added'), call_if_needed, timezone, sms_note
,to_char(NOW() AT TIME ZONE timezone,'HH24:MI') AS time
FROM users WHERE username ILIKE ?
- });
- if (my ($username,$sms, $call, $timezone, $note, $time) = $c->model->selectrow_array($f,undef,$nick)){
- $call = $call ? 'Wake up if needed' : 'Do not wake up';
- $c->reply("$username has sms $sms, $call, $time ($timezone), $note ");
- }else{
- $c->reply("No hit, maybe spelling mistake, or add % as wildcard");
+ });
+ if (my ($username,$sms, $call, $timezone, $note, $time) = $c->model->selectrow_array($f,undef,$nick)){
+ $call = $call ? 'Wake up if needed' : 'Do not wake up';
+ $c->reply("$username has sms $sms, $call, $time ($timezone), $note ");
+ }else{
+ $c->reply("No hit, maybe spelling mistake, or add % as wildcard");
+ }
}
-}
+};
-sub links
- : Help(Shows link to webbie and maybe more links later)
-{
- my ($self,$c,$msg) = @_;
- $c->reply("https://nd.ruin.nu/");
-}
+command links => {
+ help => q(Shows link to webbie and maybe more links later),
+}, class extends NDIRC::Command {
+ method execute($c,$msg) {
+ $c->reply("https://nd.ruin.nu/");
+ }
+};
-sub forum
- : Help(syntax: .forum [nick] | not everyone have access to check for others.)
-{
- my ($self,$c,$msg) = @_;
- my $dbh = $c->model;
+command forum => {
+ help => q(syntax: .forum [nick] | not everyone have access to check for others.),
+}, class extends NDIRC::Command {
+ method execute($c,$msg) {
+ my $dbh = $c->model;
- my $user;
- if ($msg =~ /(\S+)/ && $c->check_user_roles('irc_forum_others')){
- $user = $dbh->selectrow_hashref(q{
+ my $user;
+ if ($msg =~ /(\S+)/ && $c->check_user_roles('irc_forum_others')){
+ $user = $dbh->selectrow_hashref(q{
SELECT uid,username FROM users WHERE username ILIKE ?
- }, undef, $1);
- }else{
- $user = $dbh->selectrow_hashref(q{
-SELECT uid,username FROM users WHERE hostmask ILIKE ?
- }, undef, $c->host);
- }
- if ($user){
- my $unread = $dbh->selectrow_hashref(q{SELECT * FROM unread_posts($1)},undef,$user->{uid});
- if ($unread){
- $c->reply("$user->{username} has $unread->{new} posts since your last forum visit ($unread->{unread} unread posts in total) https://nd.ruin.nu/forum/allUnread");
+ }, undef, $1);
+ }else{
+ $user = $dbh->selectrow_hashref(q{
+SELECT uid,username FROM users WHERE uid = ?
+ }, undef, $c->uid);
+ }
+ if ($user){
+ my $unread = $dbh->selectrow_hashref(q{SELECT * FROM unread_posts($1)},undef,$user->{uid});
+ if ($unread){
+ $c->reply("$user->{username} has $unread->{new} posts since your last forum visit ($unread->{unread} unread posts in total) https://nd.ruin.nu/forum/allUnread");
+ }
}
}
-}
+};
1;