Hatena::Grouptwitterircgateway

TwitterIrcGateway Update

注意事項

Preview とついているモノは次回のリリース(Previewはずれる)までに変わる可能性がある・安定動作しない可能性があるモノです(人柱版といったところです)。

Preview版を利用する場合には適度にバックアップを取ってから適用したほうがよいです。

 | 

2009-03-21

TwitterIrcGateway 2.0 (Preview 2.0.3368.3278)

| 02:48 |  TwitterIrcGateway 2.0 (Preview 2.0.3368.3278) - TwitterIrcGateway Update を含むブックマーク はてなブックマーク -  TwitterIrcGateway 2.0 (Preview 2.0.3368.3278) - TwitterIrcGateway Update

大きな変更を含むため1.2ではなく次期バージョンは2.0としました。そもそも正式リリースがあった試しの方がすくないとかなんとかという話もありますがそれはさておき。

今回の変更点はそこそこ大きいので差し替える場合には念のために必ずConfigディレクトリのバックアップを取ってください。

設定: サーバ設定以外の設定はすべてユーザー固有のものに変更され、すべてはコンソール経由での設定となります

今までの設定ファイルまたはコマンドオプションスイッチは初回時に設定されるデフォルトになるだけで、設定を変更する場合には基本コンソールの Config コンテキストで行うこととなります。コンソールの使い方はキーワードページ コンソールをご参照ください。

サーバに関する設定(LISTENするアドレスやポート)、プロクシの設定以外のすべての設定はユーザごとに変更できるようになりました。

この変更に伴い TIGCONFIG は廃止され、コンソールに Set/Show コマンドが導入されました。

<misuzilla> config
<Root\Config> コンテキストを変更しました。
*names : @misuzilla Help Show Set Exit
<misuzilla> show
<Root\Config> SearchCount (Int32) = 10
(省略)
<Root\Config> BroadcastUpdateMessageIsNotice (Boolean) = False
<Root\Config> POSTFetchMode (Boolean) = False
<misuzilla> show interval
<Root\Config> Interval (Int32) = 90
<Root\Config> チェックする間隔を指定します。
<misuzilla> set interval 60
<Root\Config> Interval (Int32) = 60

また、取得間隔なども変更に応じて即座に反映されるようになりました。

@でReplyした場合にその対象の人の最後に受信したステータスのIDに対してのReplyにする機能の追加

現在 @ でReplyした場合、誰々へのreplyという扱いになりませんがこの設定を有効にすると昔のTwitter風な挙動となります。ayanyan さんのパッチがベースです。

コンソール: Help コマンド

Help コマンドにコマンド名を渡すとコマンドの説明と引数が表示されるようになりました。

DLR統合

Dynamic Language Runtime の統合がアドインとして実装されました。これにより IronPythonIronRuby を利用してのTIGの処理の拡張を行えます。

例えばスクリーンネームではなく「名前をステータステキストの後ろにつけたい」といった要望は以下のような Python スクリプトを記述し、設定ディレクトリの Scripts ディレクトリに置くだけでその望みを叶えられます。

def OnPreSendMessageTimelineStatus(sender, e):
	e.Text = e.Text + " (by " + e.Status.User.Name + ")"

Session.PreSendMessageTimelineStatus += OnPreSendMessageTimelineStatus
スクリプトを読み込ませる方法

ユーザの設定ディレクトリ内に Scripts ディレクトリ(Configs/[UserName]/Scripts)を作成して、その中に IronPython であれば .py で、IronRuby のスクリプトであれば .rb でスクリプトファイルを作成してください。

そしてコンソールDLR コンテキストで Reload コマンドを実行すると読み込まれます。エラーが発生した場合にはエラーが表示されます。

実行中のエラーの場合にはコンソールに表示されずトレース(EnableTraceで有効化)の方へ出力されます。

拡張方法

拡張方法の詳しいことに関しては後で書くかもしれません。それまでは質問するか汚いコードをよんでください。

イベントに関してはAddIns/Eventsに一覧があります。

その他の注意など

今回のリリースで含まれる DLR のバージョンは 0.9 です。利用可能な言語は IronPython 2.0 および IronRuby 1.0 Alpha です。

また、このアドインを Mono で利用する場合にはバージョンが 2.x 以降である必要があります。バンドル版ではそのままでは動かないでしょう。

DLR統合での処理を作成する上での注意点は以下の通りです。

  • PythonRubyを利用できますがネイティブではないためライブラリの利用は限られています。必要に応じて.NET Frameworkのクラスを利用してください
  • アドインにも適用されることですが基本的にイベントを受け取って処理するためイベント処理中にハンドルされていない例外を発生させないようにする必要があります。ハンドルされていない例外が発生すると他のアドインの処理が呼び出されず正しく行われなくなるためです
  • IronRubyは現段階でAlphaであり、安定性は保証できません
  • コンソールのコンテキストや真のアドイン相当の機能は作れないでしょう(コンテキストはできるかもしれません)

スクリプトのテストは別途接続やアカウントを作って行うのがオススメです。

ダウンロード

http://www.misuzilla.org/dist/net/twitterircgateway/archives/TwitterIrcGateway-2.0.3368.3278.zip

TypableMapCommandRemoveAndBlockの中身がまちがってたから差し替えました。AddIns ディレクトリにTwitterIrcGatewayCore.dll が入ってしまった方はお手数ですが削除してください。

TwitterIrcGateway 2.0 (Preview 2.0.3368.3278) - TwitterIrcGateway Update - TwitterIrcGateway - はてなグループ

インストール

まず初めに現バージョンのTIGとConfigディレクトリをバックアップします。

次に Bin ディレクトリに含まれているファイルを既存のファイルに上書きしてください(すべてのOSやプラットフォームで共通です)。その後いつもの通り起動します。

多くの設定はコンソールから行なえるようになっていますが、「文字コードの指定は起動時のみ指定できること」「デフォルト値として扱われること」から今まで利用していたオプションはそのままにしておくことをオススメします。

アドイン

今までアドインを利用していた、これから利用したい、またはDLRIntegrationアドインを使う場合などにはアドインも更新・インストールします。

アドインは ExtraAddIns にそれぞれ格納されているので、有効にしたいアドインがある場合はそのアドインのディレクトリの内容を TwitterIrcGatewayCore.dll と同じ場所にコピーしてください。

例えばDLRIntegrationを有効にしたい場合には

% pwd
/home/mayuki/tmp/TwitterIrcGateway/
% ls | grep Twitter
TwitterIrcGatewayCLI.exe
TwitterIrcGatewayCLIBootstrap.exe
TwitterIrcGatewayCore.dll
% ls | grep AddIns
AddIns
% cp ExtraAddIns/DLRIntegration/* ./

とします。

基本的に各アドインのディレクトリに含まれるものは AddIns ディレクトリのみですが、DLR統合(DLRIntegration)のみ TwitterIrcGatewayCore.dll と同じディレクトリに Microsoft.Scripting.dll 等のファイルがいくつか増えることを確認してください。

また、アドイン追加時の注意点として AddIns ディレクトリにコピーしたDLLファイルは TwitterIrcGatewayCore.dll と同じ場所には置かれていないことを確認してください。

 |