]> ruin.nu Git - NDIRC.git/commitdiff
Bot message sending restructure
authorMichael Andreen <harv@ruin.nu>
Sat, 9 Mar 2019 13:53:40 +0000 (14:53 +0100)
committerMichael Andreen <harv@ruin.nu>
Thu, 21 Mar 2019 15:47:50 +0000 (16:47 +0100)
Bot.pm
Context.pm
Delling.pm
DiscordContext.pm

diff --git a/Bot.pm b/Bot.pm
index 0d517867f3dd39869ec9a4e542ca0afee753b0c6..cbc0c5cd90332910e76871d705cd398bbe36cb4c 100644 (file)
--- a/Bot.pm
+++ b/Bot.pm
@@ -91,11 +91,16 @@ sub _default {
        return 0;
 }
 
+my $irc;
+sub irc {
+       return $irc;
+}
+
 sub _start {
        my ($self,$kernel,$heap,$session) = @_[OBJECT,KERNEL,HEAP,SESSION];
 
        # retrieve our component's object from the heap where we stashed it
-       my $irc = $heap->{irc};
+       $irc = $heap->{irc};
        $kernel->sig( DIE => 'sig_DIE' );
        $kernel->sig( USR1 => 'sig_usr1' );
        $kernel->sig( USR2 => 'sig_usr2' );
@@ -404,6 +409,7 @@ sub parseCommand {
                        disp => $self->disp,
                        model => $model,
                        server => $server,
+                       bot => $self,
                        reply_string => $reply_string,
                });
 
@@ -415,19 +421,39 @@ sub toTarget {
 
        return unless exists $self->targets->{$target};
 
-       my $session = $poe_kernel->get_active_session();
-       my $heap = $session->get_heap();
-       my $irc = $heap->{irc};
+       $self->message($msg, @{$self->targets->{$target}});
+
+}
 
+sub message {
+       my ($self, $msg, @targets) = @_;
 
-       for (@{$self->targets->{$target}}) {
-               when (/^#/) {
-                       $irc->yield(privmsg => $_, $msg);
+       for (@targets) {
+               when (/^D-(\d+)$/) {
+                       $self->discordMessage($1, $msg);
                }
-               when (/^d-(\d+)/i) {
-                       $self->discord->send_message($1, $msg );
+               default {
+                       $self->ircMessage(privmsg => $_, $msg);
                }
        }
 }
 
+sub ircMessage {
+       my ($self, $command, $target, $msg) = @_;
+
+       $msg =~ s`<b>(.*?)</b>`${\(chr(2))}$1${\(chr(15))}`gi;
+       $msg =~ s`<c(\d+)>(.*?)</c>`${\(chr(3))}$1$2${\(chr(15))}`gi;
+
+       $self->irc->yield($command, $target, $msg);
+}
+
+sub discordMessage {
+       my ($self, $target, $msg) = @_;
+
+       $msg =~ s`<b>(.*?)</b>`**$1**`gi;
+       $msg =~ s`<c(\d+)>(.*?)</c>`*$2*`gi;
+
+       $self->discord->send_message($target, $msg );
+}
+
 1;
index 39300254d1bf741e59122721a7bddc40e523a02a..36290089a995a87d376b35eeda3ea6e520a46050 100644 (file)
@@ -57,6 +57,12 @@ has model => (
        required => 1
 );
 
+has bot => (
+       is => 'ro',
+       isa => 'Object',
+       required => 1
+);
+
 sub assert_user_roles {
        my ($self,@roles) = @_;
        return 1 unless @roles;
index 96ff5ba9ebe4ae111ab4d93ae7a81a86ef357917..01097f2b318e54b9e2472bf34311e4efca472464 100644 (file)
@@ -181,7 +181,7 @@ sub refresh {
        $ircreqs->execute;
        while (my $req = $ircreqs->fetchrow_hashref){
                if ($req->{channel} eq 'def'){
-                       $self->toTarget(def => chr(3)."04 ## $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}");
@@ -204,7 +204,7 @@ GROUP BY username,call,tick,dm.fleet,p.value
        my $updefmis = $dbh->prepare(q{UPDATE defense_missions SET announced = TRUE WHERE fleet = ?});
        $defmissions->execute();
        while (my $mission = $defmissions->fetchrow_hashref){
-               $self->toTarget(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});
        }
 
@@ -249,6 +249,7 @@ after discord_message_create => sub {
                        channel => $channel,
                        disp => $self->disp,
                        model => DB(),
+                       bot => $self,
                        discord => $self->discord,
                });
 
index 4418959c021878dff7b396bfd668ae1b95c52e4f..8de77c09c17cc2ff37052d3959c3b2686dbf6802 100644 (file)
@@ -54,13 +54,9 @@ sub reply {
 sub message {
        my ($self, $target, $msg) = @_;
 
-       $msg =~ s`<b>(.*?)</b>`**$1**`gi;
-       $msg =~ s`<c(\d+)>(.*?)</c>`*$2*`gi;
-
-       $self->discord->send_message($target, $msg ); # Send the response.
+       $self->bot->discordMessage($target, $msg ); # Send the response.
 }
 
-
 sub _build_uid {
        my ($self) = @_;