tig.rbをListsに対応させてみた

追記: 本家にマージされました。GitHub - cho45/net-irc: Ruby IRC library (Client, Server and many IRC gateways to webservice)を使ったほうがいいです。

Listsに対応したtig.rbがあると便利な気がしたので、朝からがんばって改造してみました。
とても充実した休日でした。

やったこと

  • 疑似チャンネル機能をListsで置き換えました
  • それに併せてjoin・part・invite・kickの挙動も変更しています
    • /join: リストの追加
    • /part: リストの削除
    • /invite: リストへメンバの追加
    • /kick: リストからメンバの削除
  • リストのTLを直接取得するのではなく、メインのTLから振り分けています
    • 直接フォローせずに、リストに追加しているだけの人の発言は見れません

注意点

  • 実装したばかりのコードです。たぶんバグがあります
  • tig.rbの疑似チャンネル機能をListsで置き換えていますので、今ある疑似チャンネルは消えます
  • ratio回りのコードを変更できなかったので、リストの更新間隔は500秒で固定です

TLログ

みずぴー
@mzp
 よし、tig.rbをいじくるぞっと #tig(2009-11-15 08:18:06) link
みずぴー
@mzp
 lists、APIを大量に発行しそうだなぁ。ListごとにTLを取得したり、follewerの数を取得したりと、結構な数のAPIが必要だ #tig(2009-11-15 08:36:04) link
みずぴー
@mzp
 あー、リストごとにTLを取得するようにすると、tidがづれちゃうか。どうしようかなぁ #tig(2009-11-15 09:21:11) link
みずぴー
@mzp
 よし、実装が楽なほうでいこう。メインタイムライン中の発言を、各リストに振り分けるよ #tig(2009-11-15 09:22:50) link
みずぴー
@mzp
 API制限にひっかかったので、ちょっと休憩 #tig(2009-11-15 10:06:22) link
みずぴー
@mzp
 よっしゃー、発言もチャンネルごとに振り分けれるようになったぜ #tig(2009-11-15 10:36:33) link
みずぴー
@mzp
 あとは、joinとかinviteとかのコマンドに対応させないといけないのか #tig(2009-11-15 10:44:20) link
みずぴー
@mzp
 よし、コマンドをいっこづつ片づけていくぜ #tig(2009-11-15 12:34:10) link
みずぴー
@mzp
 whoコマンド対応! #tig(2009-11-15 12:39:45) link
みずぴー
@mzp
 おー、リストって名前が重複してもエラーになんないのか。むずい #tig(2009-11-15 13:29:04) link
みずぴー
@mzp
 partに対応したかも #tig(2009-11-15 13:52:37) link
みずぴー
@mzp
 listsのAPI、ほかのAPIとはかなり違うので、別の人が設計したか、今後はこのスタイルに切り替えるかのどっちかだと思う #tig(2009-11-15 15:53:37) link
みずぴー
@mzp
 inviteもできた気がする #tig(2009-11-15 16:04:40) link
みずぴー
@mzp
 うし、でけた。なかなかいい調子だぞ #tig(2009-11-15 16:07:29) link
みずぴー
@mzp
 kickできるようにした #tig(2009-11-15 16:19:09) link