Plagger で WIDE 系 #goingmyway のようにする方法

百聞は一見にしかず。このようなチャンネルにする方法

WIDE系IRCサーバの#goingmywayでは、1分に1エントリを紹介するボットが常駐しており、それを話題として話ししあう仕組みになっています。

同じことをplaggerでできるんではないかなと思った訳ですが、plaggerbot-ircには一定時間ごとに出力する機構がないため、取得したRSSを差分で出さない場合一度に出てしまいます。それはそれでいいのかもしれませんが、1分に1エントリという形で出せるようpatchを作りました。

--- IRC.pm.org	2007-11-21 12:52:34.000000000 +0900
+++ IRC.pm	2008-01-01 22:50:02.000000000 +0900
@@ -50,6 +50,8 @@
     for my $line (split("\n", $body)) {
         $self->{remote}->post( 'notify_irc/update', $line );
     }
+    my $interval = $self->conf->{interval} || 0;
+    sleep($interval) if ($interval);
 }
 
 1;

このpatchを適応したyamlの例(下記サーバ・チャンネルでは動作させていません)

global:
  plugin_path:
    - plugins
  timezone: Asia/Tokyo
  log:
    level: error

plugins:
  - module: Subscription::Config
    config:
      feed:
        - RSSURL

  - module: Notify::IRC
    config:
      daemon_port: 9999
      nickname: plaggerbot
      server_host: chat.freenode.net
      server_port: 6667
      server_channels:
        - #plagger-test
      charset: utf-8
      announce: notice
      interval: 60

この例では、intervalを60秒として追加しています。bot 側でなんとかしようかなと思いましたが、bot にキューイング機構をいれないといけないのでやめました。
interval の設定がない場合は待ち時間なしで動作しますので従来の yaml と互換を持っています。