+};
+
+command allygals => {
+ help => q(Usage: .allygals ally [min] | lists gals with a minimum of 3, or specified, allied planets. % can be used for wildcards \%-crew\% will match [F-Crew]),
+ acl => q(irc_allygals),
+}, class extends NDIRC::Command {
+ method execute($c,$msg) {
+ my ($ally,$min) = $msg =~ /^(\S+)(?: (\d+))?$/ or die 'ARGS';
+ my $dbh = $c->model;
+ $min //= 3;
+
+ my ($a) = $dbh->selectrow_array(q{
+SELECT alliance
+FROM alliances JOIN alliance_stats USING (aid)
+WHERE tick = (SELECT max(tick) FROM alliance_stats)
+ AND alliance ILIKE $1
+ },undef,$ally);
+ unless ($a){
+ $c->reply("No alliance matching '$ally'");
+ return;
+ }
+ my $query = $dbh->prepare(q{
+SELECT x,y, count(*) FROM current_planet_stats WHERE alliance = $1
+GROUP BY x,y
+HAVING count(*) >= $2
+ORDER BY count DESC,x,y
+ });
+ $query->execute($a,$min);
+ my @gals;
+ while (my $g = $query->fetchrow_hashref){
+ push @gals,"$g->{x}:$g->{y} ($g->{count})";
+ }
+ my $kgals = scalar @gals;
+ $c->reply("$a ($kgals) : ". join " ", @gals);
+ }
+};
+