summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/Bot/Zulip/Chess.pm17
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/Bot/Zulip/Chess.pm b/lib/Bot/Zulip/Chess.pm
index cc3c66e..05ae0eb 100644
--- a/lib/Bot/Zulip/Chess.pm
+++ b/lib/Bot/Zulip/Chess.pm
@@ -7,6 +7,7 @@ no warnings 'experimental::signatures';
no warnings 'experimental::postderef';
use Chess::Rep;
+use JSON::PP;
use Try::Tiny;
use WebService::Zulip;
@@ -28,6 +29,12 @@ has bot_name => (
required => 1,
);
+has streams => (
+ is => 'ro',
+ isa => 'ArrayRef[Str]',
+ required => 1,
+);
+
has white_player => (
is => 'rw',
isa => 'Str',
@@ -53,10 +60,13 @@ has _zulip => (
isa => 'WebService::Zulip',
lazy => 1,
default => sub ($self) {
- WebService::Zulip->new(
+ my $zulip = WebService::Zulip->new(
api_key => $self->api_key,
api_user => $self->api_user,
- )
+ );
+ # XXX move this into WebService::Zulip
+ $zulip->{_ua}->post('https://api.zulip.com/v1/users/me/subscriptions', {subscriptions => encode_json([ map { +{ name => $_ } } $self->streams->@* ])});
+ $zulip
},
);
@@ -100,10 +110,11 @@ sub step ($self) {
my $response = $self->handle_move(
$message->{sender_full_name}, $content
);
+ my $to = $message->{type} eq 'private' ? $message->{sender_email} : $message->{display_recipient};
$self->_zulip->send_message(
content => $response,
subject => $message->{subject},
- to => $message->{sender_email},
+ to => $to,
type => $message->{type},
);
}