FLYING

/* TODO: 気の利いた説明を書く */

TwitPSMをほんのちょっと改造してみる

TwitPSMを使うとLive Messengerのコメントをそのままtwitterにも投稿できて非常に便利なのだけど,コメント欄のメッセージを何でもかんでもtwitterに投稿してしまうという欠点がある。そこで,TwitPSMのスクリプトにほんのちょっとコードを加えて,メッセージに特定の文字列が含まれる場合のみtwitterに投稿するように改造してみる。

Messenger Plus! Liveのインストール先ディレクトリを開くと"Scripts"というディレクトリがあるので,その中にある"TwitPSM"というディレクトリの"TwitPSM.js"というスクリプトテキストエディタで開く。スクリプトのソースを見ると,2行目にTwitterというオブジェクトの定義があり,その中でsendというメソッドが定義されていることが分かる。このsendの動作に少し変更を加える。

具体的には,13行目の空行の部分に以下の処理を加える。

//message not includes special-string
if(!message.match(/^@/)) return;
message = message.replace(/^@/, "");

こうすると,メッセージの先頭に「@」という文字がある場合のみtwitterに投稿するようになる。逆に,メッセージの先頭に「@」という文字がある場合のみtwitterに投稿しないよう動作を変更したいなら

//message includes special-string
if(message.match(/^@/)) return;

とすればいい。コード中の正規表現を適宜書き換えることにより,twitter投稿の条件となる文字列は自由に設定できる。書き換えが終わったら,スクリプトを上書き保存してメッセンジャを再起動すれば完了。っていうかスクリプトJavaScriptで書かれているようなので,いくらでも動作を変更できそうですね。これは便利。

追記 (2009-04-30T01:36:10+09:00)

sendメソッドに書き足すよりは,その下の28行目にあるOnEvent_MyPsmChange関数を

function OnEvent_MyPsmChange(new_psm){
	Debug.Trace(new_psm);
	if (new_psm.match(/^@/)) {
		new_psm = new_psm.replace(/^@/, "");
		Twitter.send(new_psm);
	}
}

こういう感じに書き換えた方が分かりやすかったかも。また,投稿後にメッセンジャのコメントに残る「@」が気になる場合は

function OnEvent_MyPsmChange(new_psm){
	Debug.Trace(new_psm);
	if (new_psm.match(/^@/)) {
		new_psm = new_psm.replace(/^@/, "");
		Twitter.send(new_psm);
		Messenger.MyPersonalMessage = new_psm;
	}
}

とすることで,投稿後に自動で削除することができる。それとひとつ言い忘れたのだけど,スクリプトはわざわざディレクトリを辿らなくとも,Messenger Plus! Liveのオプション画面からエディタウィンドウを開いて編集できるみたい。

更に追記 (2009-05-02T21:54:05+09:00)

TwitPSMからメッセージをtwitterに投稿すると,ときどきtwitterのタイムラインに自分のアイコンが表示されなくなる不具合がある模様。今のところ再現条件も不明。冷静に考えると単純にtwitterの不具合だったという可能性もあるので,しばらく様子を見てみようと思いまふ。