Mustache :{

use perl

P5-hubot

p5-hubot scipts explained

필요해서 hubotperl 로 옮기고 있습니다. - p5-hubot

아직 해야할 일이 많지만 테스트 + 문서화를 해서 CPAN 에 올릴 생각입니다.

hubot-scripts contributors 는 100명이 넘습니다.

p5-hubot 도 도움을 받아서 멋진 기능을 장착하고 싶습니다.

CPANHubot::Scripts::* 모듈이 많아지면 좋겠습니다.

robot 에게 http://twitter.com/<username>/status/<tweetid> 의 패턴이 들리면 그 내용을 파싱해서 말하는 스크립트 입니다.

Hubot::Scripts::tweet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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 SYNOPSIS

http://twitter.com/<username>/status/<tweetid>

=head1 DEPENDENCIES

None

=head1 CONFIGURATION

None

=head1 AUTHOR

Hyungsuk Hong

=cut
tweet.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Description:
#   Detect tweet URL and send tweet content
#
# Dependencies:
#   None
#
# Configuration:
#   None
#
# Commands:
#
# Author:
#   Vrtak-CZ

module.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 도 하고 그럽니다.

우선 아이디어가 있으면 남겨주세요.

테스트환경구축이랑 의존성문제는 해결해서 다시 포스팅하겠습니다.

SEE ALSO

Comments