仕事場と教授とのやりとりに、IRCが活用されている。IRCは手軽で便利なのだけれど。
無線LANやイーモバイルなど不安定な通信環境下だと、ログが流れてしまう。会話が途切れる。
大事な会話や、呼び出しに気づかなくて迷惑をかけるので、IRCのログ収拾し、OpenPNEのトピックに投げることにした。
IRCに常駐し発言を受信したらPNEに投げる。
irc_bot.rb
#!/usr/bin/env ruby $KCODE = "u" IRC_ENCODING='iso-2022-jp' require 'rubygems' require 'mechanize' require 'net/irc' require 'pp' require 'kconv' class EchoBot < Net::IRC::Client def initialize ( *args) super end def post_to_pne message #IRCのポストをOpenPNEに投げる。 cli = WWW::Mechanize.new cli.get('http://pne.example.com/') form = cli.page.forms[0] form.fields[0].value='takuyat@gmail' form.fields[1].value='*****' form.submit cli.get('http://pne.example.com/communityTopic/14') form = cli.page.forms[1] form.fields[1].value= message form.submit cli.get('http://pne.example.com/member/logout') end def on_rpl_welcome(m) #WELCOMメッセージ受信後 post JOIN , '#room-takuya' end def on_privmsg(m) post_to_pne m.prefix.split('!').first+":\t"+m[1].to_s.toutf8 end end EchoBot.new ("irc.example.com","6667",{ :nick => "sns_logger", :user => "sns_logger", :real => "log to sns" }).start
起動
takuya@host: nohup ruby irc_bot.rb &
常駐にはdaemontool や screenを用いても良い。
今後の課題
- PNEのトピックへのコメントの上限数は考慮してない。
- OpenPNEのVer3.1にCommunityTopicプラグインを入れただけの状態で使っている。
- ページ内のフォームの個数が変わると動作しない。