mirc.nb 更新: フィルタ
nadoka 用 mirc 互換レイヤー 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