p5-hubot
...October 04, 2012
p5-hubot scipts explained
필요해서 hubot 을 perl
로 옮기고
있습니다. - p5-hubot
아직 해야할 일이 많지만 테스트 + 문서화를 해서 CPAN 에 올릴 생각입니다.
hubot-scripts contributors 는 100명이 넘습니다.
p5-hubot
도 도움을 받아서 멋진 기능을 장착하고 싶습니다.
CPAN 에 Hubot::Scripts::*
모듈이
많아지면 좋겠습니다.
robot 에게 http://twitter.com/<username>/status/<tweetid>
의 패턴이
들리면 그 내용을 파싱해서 말하는 스크립트 입니다.
package Hubot::Scripts::tweet;use strict;use warnings;use JSON::XS;sub load {my ( $class, $robot ) = @_;$robot->hear(qr/https?:\/\/(mobile\.)?twitter\.com\/.*?\/status\/([0-9]+)/i,sub {my $msg = shift; # Hubot::Response$msg->http( 'https://api.twitter.com/1/statuses/show/'. $msg->match->[1]. '.json' )->get(sub {my ( $body, $hdr ) = @_;return if ( !$body || !$hdr->{Status} =~ /^2/ );my $tweet = decode_json($body);$msg->send("$tweet->{user}{screen_name}: $tweet->{text}");});$msg->message->finish;});}1;=head1 SYNOPSIShttp://twitter.com/<username>/status/<tweetid>=head1 DEPENDENCIESNone=head1 CONFIGURATIONNone=head1 AUTHORHyungsuk Hong=cut
# Description:# Detect tweet URL and send tweet content## Dependencies:# None## Configuration:# None## Commands:## Author:# Vrtak-CZmodule.exports = (robot) ->robot.hear /https?:\/\/(mobile\.)?twitter\.com\/.*?\/status\/([0-9]+)/i, (msg) ->msg.http("https://api.twitter.com/1/statuses/show/#{msg.match[2]}.json").get() (err, res, body) ->return if err or (res.statusCode != 200)tweet = JSON.parse(body)msg.send "@#{tweet.user.screen_name}: #{tweet.text}"msg.message.finish()
robot.hear /foo/
:foo
가 들리면 반응합니다.robot.respond /foo/
:hubot: foo
에 반응합니다.robot.send 'hi'
: 로봇이hi
라고 합니다.robot.reply 'hi'
: 로봇이 말건사람한테<user>: hi
라고 합니다.
요거 4개의 기능만 알면 스크립트를 작성하긴 쉽습니다.
저희회사에서는 이걸 이용해서 standup-meeting 도 하고 그럽니다.
우선 아이디어가 있으면 남겨주세요.
테스트환경구축이랑 의존성문제는 해결해서 다시 포스팅하겠습니다.