- 2009/9/10 木曜日 23:47:54
- perl
twitterの#yapcasia2009ハッシュタグがスクリーンに晒されるのが個人的に非常にツボだったので、wassrのyapcasia2009チャンネルに発言するとirc.freenode.orgの#yapc.asia-jaに投稿するボットも作ってみました。
wassrにはstreaming APIはないようなので5秒ごとにpollingしちゃってます。いいんでしょうか。
参考文献(つうかほぼパクリ): 
Twitterのハッシュタグ付き発言をIRCに投稿するボットをYAPC::Asia向けに作った
以下コード
#!/usr/bin/perl
use strict;
use warnings;
use AnyEvent::IRC::Client;
use Net::Wassr;
use Encode ();
use Storable;
my $channel = '#yapc.asia-ja';
my $interval = 5;
my $wassr_channel = 'yapcasia2009';
my $wassr = Net::Wassr->new(
    user   => 'nihen',
    passwd => '*****',
);
my $cv = AnyEvent->condvar;
my $pc = AnyEvent::IRC::Client->new;
my $send_message = -e 'send_message' ? retrieve('send_message') : {};
$SIG{INT} = $SIG{TERM} = sub {
    $pc->disconnect('bye');
    store $send_message, 'send_message';
    exit;
};
$pc->reg_cb(
    connect => sub {
        my ( $pc, $err ) = @_;
        if ( defined $err ) {
            warn $err;
            return;
        }
    },
    registered => sub {
        my ( $self ) = @_;
        print "registerd!\n";
        $pc->enable_ping(60);
    },
    disconnect => sub {
        print "disconnected: $_[1]!\n";
    }
);
$pc->send_srv('JOIN', $channel);
$pc->send_chan($channel, 'NOTICE', $channel, 'hi');
$pc->connect('irc.freenode.org', 6667, {
    nick => 'wassr_bot',
    user => 'wassr_bot',
    real => 'wassr_bot',
});
my $w = AnyEvent->timer(after => $interval, interval => $interval, cb => sub {
    my $time_line = $wassr->channel_timeline('name_en=' . $wassr_channel);
    if ( !$time_line || ref $time_line ne 'ARRAY' ) {
        return;
    }
    foreach my $message ( @{$time_line} ) {
        next if $send_message->{$message->{rid}};
        $send_message->{$message->{rid}} = 1;
        $pc->send_chan($channel, 'NOTICE', $channel, Encode::encode('utf-8', $message->{user}->{login_id} . ': ' . $message->{body}));
    }
});
$cv->wait;
コメント:0
トラックバック:0
- この記事のトラックバック URL
- https://blog.everqueue.com/chiba/2009/09/10/310/trackback/
- トラックバックの送信元リスト
- Wassrのyapcasia2009チャンネルの発言をIRCに投稿するボットをYAPC::Asiaの二日目向けに作った - へぼい日記 より
