2008年 01月 25日

lig.rb

Linger の IRC gateway を Ruby でかきました。

  • 部屋に入れる (パスワードつきの部屋にも入れる)
  • 発言できる

だけです。

  • チャンネル名は URL の末尾のやつ (チャンネルの名前ではない)
  • leave しないで放置して繋ぎなおすと、いっぱいメッセージが流れるかもしれないですが処理していません。
  • 部屋の nick がそのまま IRC の nick として流れます。なのでクライアントが u8 の nick を処理できないと死にます。

Ruby のライブラリが一応公開されていたのでそれつかっています。http://svn.lingr.com/api/toolkits/ruby/infoteria/api_client.rb

chokan の rice/irc が必要です。

$ mkdir lig
$ cd lig
$ svn export http://svn.coderepos.org/share/lang/ruby/chokan/trunk/rice/
$ wget http://svn.lingr.com/api/toolkits/ruby/infoteria/api_client.rb
$ wget http://svn.coderepos.org/share/lang/ruby/misc/lig.rb

今は net-irc gem の一部になっています。HEAD をかなり頻繁に更新しているので

$ svn co http://svn.coderepos.org/share/lang/ruby/net-irc/trunk/ net-irc
$ ruby examples/lig.rb --help

してください


tiarra の設定例

lingr {
	host: localhost
	port: 16669
	name: username@example.com
	password: password on lingr
	in-encoding: utf8
	out-encoding: utf8
}

haskell_hackathon_2008 を IRC から見たかったのでつくりました。最初は http://search.cpan.org/src/MIYAGAWA/POE-Component-Client-Lingr-0.04/eg/lingr-ircd.pl を使おう/いじってみようとおもったのですが、せっかくなので Lingr の API をさわってみた感じです。

rice をもとにして IRC サーバをもっと簡単にかくライブラリを書いて gem にするとよさそうかもしれない。あんまソース綺麗じゃないしなぁ (てきとうに書いたわりにそこそこ安定してる)

なんかうんこみたいなバグがいっぱいあったのでたくさんなおしました。日記書くとバグがみつかる