NAME Mojo::SlackRTM - non-blocking SlackRTM client using Mojo::IOLoop SYNOPSIS use Mojo::SlackRTM; # get from https://api.slack.com/web#authentication my $token = "xoxb-12345678901-AbCdEfGhIjKlMnoPqRsTuVWx"; my $slack = Mojo::SlackRTM->new(token => $token); $slack->on(message => sub { my ($slack, $event) = @_; my $channel_id = $event->{channel}; my $user_id = $event->{user}; my $user_name = $slack->find_user_name($user_id); my $text = $event->{text}; $slack->send_message($channel_id => "hello $user_name!"); }); $slack->start; DESCRIPTION Mojo::SlackRTM is a non-blocking SlackRTM <https://api.slack.com/rtm> client using Mojo::IOLoop. This class inherits all events, methods, attributes from Mojo::EventEmitter. EVENTS There are a lot of events, eg, hello, message, user_typing, channel_marked, .... See https://api.slack.com/rtm for details. $slack->on(reaction_added => sub { my ($slack, $event) = @_; my $reaction = $event->{reaction}; my $user_id = $event->{user}; my $user_name = $slack->find_user_name($user_id); $slack->log->info("$user_name reacted with $reaction"); }); METHODS call_api $slack->call_api($method); $slack->call_api($method, $param); $slack->call_api($method, $cb); $slack->call_api($method, $param, $cb); Call slack web api. See https://api.slack.com/methods for details. $slack->call_api("channels.list", {exclude_archived => 1}, sub { my ($slack, $tx) = @_; if ($tx->success and $tx->res->json("/ok")) { my $channels = $tx->res->json("/channels"); $slack->log->info($_->{name}) for @$channels; return; } my $error = $tx->success ? $tx->res->json("/error") : $tx->error->{message}; $slack->log->error($error); }); connect $slack->connect; find_channel_id my $id = $slack->find_channel_id($name); find_channel_name my $name = $slack->find_channel_name($id); find_user_id my $id = $slack->find_user_id($name); find_user_name my $name = $slack->find_user_name($id); finish $slack->finish; next_id my $id = $slack->next_id; ping $slack->ping; reconnect $slack->reconnect; send_message $slack->send_message($channel => $text); Send $text to slack $channel via the websocket transaction. start $slack->start; This is a convenient method. In fact it is equivalent to: $slack->connect; $slack->ioloop->start unless $slack->ioloop->is_running; ATTRIBUTES auto_reconnect Automatically reconnect to slack ioloop Mojo::IOLoop singleton log Mojo::Log instance metadata The response of rtm.start. See https://api.slack.com/methods/rtm.start for details. token slack access token ua Mojo::UserAgent instance ws Websocket transaction DEBUGGING Set MOJO_SLACKRTM_DEBUG=1. SEE ALSO AnyEvent::SlackRTM AnySan::Provider::Slack http://perladvent.org/2015/2015-12-23.html AUTHOR Shoichi Kaji <skaji@cpan.org> COPYRIGHT AND LICENSE Copyright 2016 Shoichi Kaji <skaji@cpan.org> This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.