From 8211693b922ad772efc64463431f667d3baaceea Mon Sep 17 00:00:00 2001 From: Michael Andreen Date: Sat, 9 Mar 2019 14:53:40 +0100 Subject: [PATCH] Bot message sending restructure --- Bot.pm | 44 +++++++++++++++++++++++++++++++++++--------- Context.pm | 6 ++++++ Delling.pm | 5 +++-- DiscordContext.pm | 6 +----- 4 files changed, 45 insertions(+), 16 deletions(-) diff --git a/Bot.pm b/Bot.pm index 0d51786..cbc0c5c 100644 --- 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`(.*?)`${\(chr(2))}$1${\(chr(15))}`gi; + $msg =~ s`(.*?)`${\(chr(3))}$1$2${\(chr(15))}`gi; + + $self->irc->yield($command, $target, $msg); +} + +sub discordMessage { + my ($self, $target, $msg) = @_; + + $msg =~ s`(.*?)`**$1**`gi; + $msg =~ s`(.*?)`*$2*`gi; + + $self->discord->send_message($target, $msg ); +} + 1; diff --git a/Context.pm b/Context.pm index 3930025..3629008 100644 --- a/Context.pm +++ b/Context.pm @@ -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; diff --git a/Delling.pm b/Delling.pm index 96ff5ba..01097f2 100644 --- a/Delling.pm +++ b/Delling.pm @@ -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 => "## $req->{username} via webbie ## >> $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 => "$mission->{username} sent def 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, }); diff --git a/DiscordContext.pm b/DiscordContext.pm index 4418959..8de77c0 100644 --- a/DiscordContext.pm +++ b/DiscordContext.pm @@ -54,13 +54,9 @@ sub reply { sub message { my ($self, $target, $msg) = @_; - $msg =~ s`(.*?)`**$1**`gi; - $msg =~ s`(.*?)`*$2*`gi; - - $self->discord->send_message($target, $msg ); # Send the response. + $self->bot->discordMessage($target, $msg ); # Send the response. } - sub _build_uid { my ($self) = @_; -- 2.39.2