Version 7 (modified by cho45, 5 years ago)

--

Citrus

net-irc を使った IRC BOT フレームワーク

(chokan だったもの)

特徴

  • 動的ロードプラギン
  • 全部 UTF-8 (文字コード変換は Tiarra などで)
  • チャンネルごとのプラグインのオンオフ
  • テストいっぱい ( coverage: http://lab.lowreal.net/test/citrus/ )

リポジトリ

svn co http://svn.coderepos.org/share/lang/ruby/citrus/trunk/ citrus

動かすだけなら

ruby citrus.rb -c config.yaml.sample

プラグイン

  • Citrus::Plugin を継承してください (必須ではないけど)
  • ファイル名とクラス名は特に関係なくなりました

API

datafile("foobar")
Pathname でデータファイルへのパスをかえす。 (plugins/plusplus.rb を参考にしてください)
post COMMAND, param, param
サーバへコマンドをおくる post NOTICE, "#channel", "foobar"
notice channel, mesg
privmsg channel, mesg
post をよぶさらに簡単なメソッド 詳しくはスーパークラスを参照: lib/citrus/plugin.rb

http://coderepos.org/share/browser/lang/ruby/citrus/trunk/plugins/simple_reply.rb (最も簡単なサンプル)

GetText によるメッセージのカスタマイズ

(まだ殆どのプラグインはメッセージがハードコーディングされています)

Citrus::Plugin は GetText を include しているため、サブクラスであるそれぞれのプラグインは GetText のメソッドをすぐによべ、textdomain を設定すればすぐに利用できます。plugins/always_no_op.rb を参考にしてください。

GetText の pot/po/mo ファイルの作成は (普通にやる他に) Rake タスクを利用するのが便利です。

rake text:po
pot/po ファイルのアップデート
rake text:init target=<domain> lang=<lang>
po ファイルの作成
rake text:mo
mo ファイルの作成

作業の流れとしては

  1. bindtextdomain "plugin_name" をプラグイン内でする。
  2. _("key") でメッセージをうめこむ
  3. rake text:po で pot ファイルを作る
  4. rake text:init target=plugin_name lang=ja で po ファイルの雛形を作る
  5. rake test:mo で mo を生成する

chokan からの変更点 (config.yaml とかに影響する)

  • Core プラグインの名前が System に変更
  • UriInformation がなくなり、HTTP プラグインに
  • チャンネルごとのオンオフがコアに実装された。