ホーム > perl > Wassrのyapcasia2009チャンネルの発言をIRCに投稿するボットをYAPC::Asiaの二日目向けに作った

Wassrのyapcasia2009チャンネルの発言をIRCに投稿するボットをYAPC::Asiaの二日目向けに作った

  • 投稿者: chiba
  • 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;
はてなブックマーク - Wassrのyapcasia2009チャンネルの発言をIRCに投稿するボットをYAPC::Asiaの二日目向けに作った

コメント:0

コメントフォーム
入力した情報を記憶する

トラックバック:0

この記事のトラックバック URL
https://blog.everqueue.com/chiba/2009/09/10/310/trackback/
トラックバックの送信元リスト
Wassrのyapcasia2009チャンネルの発言をIRCに投稿するボットをYAPC::Asiaの二日目向けに作った - へぼい日記 より

ホーム > perl > Wassrのyapcasia2009チャンネルの発言をIRCに投稿するボットをYAPC::Asiaの二日目向けに作った

検索
フィード
メタ情報

ページの上部に戻る