今回のYAPCは
DeNAさんが
スポンサーなので
求人PR大使をやってる
tsudaさんの
コスプレしてきました
# echo bot
use AnySan::Provider::IRC;
my $irc = irc
'chat.freenode.net',
nickname => 'AnySan',
channels => {
'#danthebot' => {},
};
AnySan->register_listener(
echo => {
cb => sub {
my $receive = shift;
$receive->send_replay($receive->message);
}
}
);
AnySan->run;
# echo bot
use AnySan::Provider::Twitter;
my $twitter = twitter
consumer_key => ...,
consumer_secret => ...,
token => ...,
token_secret => ...,
method => 'filter',
track => $keyword,
;
AnySan->register_listener(streamer => {
event => 'timeline',
cb => sub {
my $receive = shift;
$receive->send_replay($receive->message);
}
});
AnySan->run;
RPC系のモジュールと
組み合わせて
通知系等の能動的なbotも
# bot server
use AnyEvent::MPRPC;
use AnySan::Provider::IRC;
my $irc = irc
'chat.freenode.net',
nickname => 'AnySan1',
channels => {
'#danthebot' => {},
};
my $server = mprpc_server '127.0.0.1', '4423';
$server->reg_cb( send => sub {
my ($res_cv, $args) = @_;
$irc->send_chan(
$args->{channel}, 'NOTICE',
$args->{channel}, $args->{message},
);
$res_cv->result('sent'); # return to client
});
AnySan->run;
# bot client
use AnyEvent::MPRPC;
my $channel = shift;
my $message = shift;
my $client = mprpc_client '127.0.0.1', '4423';
my $d = $client->call(
send => {
channel => $channel,
message => $message,
}
);
say $d->recv;
AnyEventベースなんで
もうちょっと
特徴わかりやすい
デモ作った
こーど見ながら動かしましょう
有り難うございました!