use POE::Session;
use ND::DB;
+use NDIRC::DiscordContext;
+
my ($tick,$stattick) = (0,0);
my $last_announcement = 0;
my $nickname = $irc->nick_name;
if ($msg =~ /^(\S+): (.+)$/ && $self->disp->has_command('anon',$channel)){
- my $_ = $1;
+ local $_ = $1;
my $text = $2;
unless ($irc->is_channel_member($channel,$1) || /(Constructing|Researching)/){
$msg = ".anon $_ $text";
$irc->yield(mode => $channel, $mode, @who) if $mode;
}
- if (lc $channel ~~ lc $disp->targets->{members}){
+ if (lc $channel ~~ lc $self->targets->{members}){
if (time - $last_announcement < 1){
$last_announcement = time;
return;
FROM users u WHERE hostmask = ?
}, undef, $address);
if ($user){
- if ($user->{password} eq ''){
- $irc->yield(privmsg => $disp->targets->{members}, "$nick: Get a new random password with /msg delling !getpass . If you don't know your username, then you can get it with .points");
+ unless ($user->{password}) {
+ $irc->yield(privmsg => $self->targets->{members}, "$nick: Get a new random password with /msg delling !getpass . If you don't know your username, then you can get it with .points");
}
if ($tick > 12 && not defined $user->{pid}){
- $irc->yield(privmsg => $disp->targets->{members}, "$nick: go to https://nd.ruin.nu/ and enter your coords.");
+ $irc->yield(privmsg => $self->targets->{members}, "$nick: go to https://nd.ruin.nu/ and enter your coords.");
}
if (not defined $user->{last_forum_visit}){
- $irc->yield(privmsg => $disp->targets->{members}, "$nick: Go read the forum! https://nd.ruin.nu/forum");
+ $irc->yield(privmsg => $self->targets->{members}, "$nick: Go read the forum! https://nd.ruin.nu/forum");
}else {
my $unread = $dbh->selectrow_hashref(q{SELECT * FROM unread_posts($1)},undef,$user->{uid});
if ($unread && $unread->{new}){
});
$scans->execute;
while (my $scan = $scans->fetchrow_hashref){
- $heap->{irc}->yield(notice => $scan->{nick}, "($scan->{coords} $scan->{type})"
- ." http://game.planetarion.com/showscan.pl?scan_id=$scan->{scan_id}");
+ $self->message("($scan->{coords} $scan->{type})"
+ ." http://game.planetarion.com/showscan.pl?scan_id=$scan->{scan_id}"
+ , @{$scan->{nick}});
$sentscan->execute($scan->{id});
}
my @row = $dbh->selectrow_array(q{SELECT tick(), max(tick) FROM planet_stats});
if ($tick != $row[0]){
$tick = $row[0];
- $irc->yield(privmsg => $disp->targets->{def}, "New tick: $tick");
+ $self->toTarget(def => "New tick: $tick");
}
if (defined $row[1] && $stattick != $row[1]){
$stattick = $row[1];
- $irc->yield(privmsg => $disp->targets->{members}, "New tick: $stattick");
+ $self->toTarget(members => "New tick: $stattick");
}
my $ircreqs = $dbh->prepare(q{SELECT id,username,message,channel FROM irc_requests NATURAL JOIN users WHERE not sent});
my $upircreq = $dbh->prepare(q{UPDATE irc_requests SET sent = TRUE WHERE id = ?});
$ircreqs->execute;
while (my $req = $ircreqs->fetchrow_hashref){
if ($req->{channel} eq 'def'){
- $irc->yield(privmsg => $disp->targets->{def}, chr(3)."04 ## $req->{username} via webbie ## >> $req->{message}");
- $self->parseCommand("~report_incs $req->{message}",$irc,$req->{username},' BATCH ',$disp->targets->{def},$dbh);
- }elsif(exists $disp->targets->{$req->{channel}}){
- $irc->yield(privmsg => $disp->targets->{$req->{channel}}, "<$req->{username} via webbie> $req->{message}");
+ $self->toTarget(def => "<c04>## $req->{username} via webbie ## >></c> $req->{message}");
+ #$self->parseCommand("~report_incs $req->{message}",$irc,$req->{username},' BATCH ',$disp->targets->{def},$dbh);
+ }else{
+ $self->toTarget($req->{channel} => "<$req->{username} via webbie> $req->{message}");
}
$upircreq->execute($req->{id});
}
my $updefmis = $dbh->prepare(q{UPDATE defense_missions SET announced = TRUE WHERE fleet = ?});
$defmissions->execute();
while (my $mission = $defmissions->fetchrow_hashref){
- $irc->yield(privmsg => $disp->targets->{def}, chr(3)."06 $mission->{username} sent def to call $mission->{call}, $mission->{value}% of value (tick $mission->{tick}) https://nd.ruin.nu/calls/edit/$mission->{call}");
+ $self->toTarget(def => "<c06>$mission->{username} sent def</c> to call $mission->{call}, $mission->{value}% of value (tick $mission->{tick}) https://nd.ruin.nu/calls/edit/$mission->{call}");
$updefmis->execute($mission->{fleet});
}
($tick,$stattick) = DB()->selectrow_array(q{SELECT tick(),max(tick) FROM planet_stats});
};
+after discord_message_create => sub {
+ my $self = shift;
+ my $hash = shift;
+
+ my $author = $hash->{author};
+ my $msg = $hash->{content};
+ my $channel_id = $hash->{channel_id};
+ my $author_name = $author->{username}.'#'.$author->{discriminator};
+ my $author_id = $author->{id};
+ return if $author->{'id'} eq $self->discord_id; # Ignore my own messages
+
+ my $channel = "D-".$channel_id;
+ if (exists $self->discord_channels->{$channel_id}) {
+ $channel = 'dm' if ($self->discord_channels->{$channel_id}->{type} == 1);
+ }
+
+ say localtime(time) . " - $channel_id $channel $author_name $author_id";
+
+ my $c = NDIRC::DiscordContext->new({
+ discord_id => $author_name,
+ channel_id => $channel_id,
+ channel => $channel,
+ disp => $self->disp,
+ model => DB(),
+ bot => $self,
+ discord => $self->discord,
+ });
+
+ return $self->handleCommand($c,$msg);
+
+};
+
1;