]> ruin.nu Git - NDIRC.git/blobdiff - Commands/Usermgm.pm
Converted the .forum command
[NDIRC.git] / Commands / Usermgm.pm
index a8683c8c211c57e30c5012e098fe7aacea12e38e..247fb33a18f1ed865942b3eca44e4e49e4b81ff5 100644 (file)
@@ -403,4 +403,85 @@ SELECT username,hostmask,pnick FROM users WHERE hostmask ILIKE $1 OR pnick ILIKE
        $f->finish;
 }
 
+sub a
+       : Help(Usage: .a username [points] | % can be used for wildcards %arro% will match barrow, if the number of points isn't specified, then 1 will be assumed.)
+       : ACL(irc_a)
+{
+       my ($self,$c,$msg) = @_;
+       my ($nick,$points) = $msg =~ /^(\S+)(?: (-?(:?\d+|\d*\.\d+)))?$/ or die 'ARGS';
+       $points //= 1;
+
+       my ($fleets) = $c->model->selectrow_array(q{
+SELECT count(*) FROM raids r
+       JOIN raid_targets rt ON r.id = rt.raid
+       JOIN raid_claims rc ON rt.id = rc.target
+WHERE not launched  AND tick + 24 > tick()
+       AND uid = (SELECT uid FROM users WHERE username ILIKE $1);
+               },undef,$nick);
+
+       if ($fleets > 0 && $points > 0){
+               $c->reply("$nick has $fleets claimed waves the last 24 ticks that aren't marked as launched, so no points.");
+               return;
+       }
+       addPoints($c, 'attack', $nick, $points);
+}
+
+sub d
+       : Help(Usage: .d username [points] | % can be used for wildcards %arro% will match barrow, if the number of points isn't specified, then 1 will be assumed.)
+       : ACL(irc_d)
+       : Type(def)
+{
+       my ($self,$c,$msg) = @_;
+       my ($nick,$points) = $msg =~ /^(\S+)(?: (-?(:?\d+|\d*\.\d+)))?$/ or die 'ARGS';
+
+       addPoints($c, 'defense', $nick, $points);
+}
+
+sub s
+       : Help(Usage: .s username [points] | % can be used for wildcards %arro% will match barrow, if the number of points isn't specified, then 1 will be assumed.)
+       : ACL(irc_s)
+{
+       my ($self,$c,$msg) = @_;
+       my ($nick,$points) = $msg =~ /^(\S+)(?: (-?(:?\d+|\d*\.\d+)))?$/ or die 'ARGS';
+
+       addPoints($c, 'scan', $nick, $points);
+}
+
+sub h
+       : Help(Usage: .h username [points] | % can be used for wildcards %arro% will match barrow, if the number of points isn't specified, then 1 will be assumed.)
+       : ACL(irc_h)
+{
+       my ($self,$c,$msg) = @_;
+       my ($nick,$points) = $msg =~ /^(\S+)(?: (-?(:?\d+|\d*\.\d+)))?$/ or die 'ARGS';
+
+       addPoints($c, 'humor', $nick, $points);
+}
+
+sub addPoints {
+       my ($c,$type, $nick, $points) = @_;
+       $points //= 1;
+
+       my $dbh = $c->model;
+
+       if ($points*$points > 400){
+               $c->reply("Values between -20 and 20 please");
+               return;
+       }
+
+       my $f = $dbh->prepare(q{SELECT uid,username FROM users WHERE username ILIKE ?});
+       $f->execute($nick);
+       my $user = $f->fetchrow_hashref;
+       if ($f->rows == 1){
+               $type .= "_points";
+               $dbh->do(qq{UPDATE users SET $type = $type + ? WHERE uid = ?}
+                       ,undef,$points,$user->{uid});
+               $c->reply("$user->{username} has been given $points $type");
+       }elsif ($f->rows == 0){
+               $c->reply("No hit, maybe spelling mistake, or add % as wildcard");
+       }else{
+               $c->reply("More than 1 user matched, please refine the search");
+       }
+       $f->finish;
+}
+
 1;