mirc.nb 更新: フィルタ

nadokamirc 互換レイヤー mirc.nb の更新

  • const_missing を使って、mirc との互換性向上(NICKでボットのnickがとれる)
  • フィルタ機能の追加

privmsg に対して何かするだけの簡易ボットを書くための機能を入れました。mircのプラグイン風に書いて、どっか(標準ではmirc_filters)に入れておけば reload> したタイミングで使用可能に。

例: 発言にURLが含まれていた時に、そのページのタイトルを表示するフィルタ

require 'rubygems'
require 'mechanize'

def title msg
  if %r|(http://[^\s]*)| =~ msg
    agent = WWW::Mechanize.new

    page = agent.get($1)
    toeuc(page.title)
  end
end

これを、title.rb として、mirc_filters に置いて、reload> すれば、irc で URL を発言したときにタイトルが自動的に表示されます。不思議!

Net::HTTP ではなく WWW::Mechanize を使ってるのは、Tech 総研の shiro さんのインタビューページが、Cookie 対応でないとアクセスできなかったからです。

あれ? content-type をチェックして html でない時はなにもしないようにしてたつもりだったけど、消しちゃってるなあ。まあいいか。

もうちょっとちゃんとしたバージョン

require 'rubygems'
require 'mechanize'

def title msg
  if %r|(http://[^\s]*)| =~ msg
    agent = WWW::Mechanize.new
    begin
      page = agent.get($1)
      if /html/ =~ page.header["content-type"]
        toeuc(page.title)
      end
    rescue WWW::Mechanize::ResponseCodeError
      $!.message
    end
  end
end