From b8ed4cb07364c8fab38483f01ab611a8dc4b037e Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 22 Oct 2014 15:02:05 -0400 Subject: subscribe to streams on startup --- lib/Bot/Zulip/Chess.pm | 17 ++++++++++++++--- 1 file 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}, ); } -- cgit v1.2.3