LimeChatのマクロの書き方についてのメモ

何ヶ月か前にChatZillaからLimeChat2に乗り換えて以来 全然使っていなかったので、この週末にマクロのヘルプを少し読んでみた。

マクロ関連データの保存場所

WinXPの場合、LimeChat2のインストールされているディレクトリ下の users\あなたのユーザ名\macro\に保存される。\Documents and Settings\あなたのユーザ名\Application Data\の下ではないので、バックアップを取る時に注意すること。

作ったマクロは件のディレクトリに ".lmf"なる拡張子で保存される。

マクロ中で「辞書」やら音声やらを使用する場合は、それぞれ同ディレクトリ下の「text」「sound」なるサブディレクトリに入れておくこと

マクロの作り方

メニューバーから[設定]-[マクロの設定]と入ると 下のようなダイアログが出る:

ここで「新規」を選んで名前を決めてやれば新しいマクロファイルが一つ作られる。「このマクロはこのサーバに対しては実行する/しない」といった設定をマクロファイルごとに行える。


一つのマクロファイルは「条件部」と「動作部」から成る組(以下仮に「命令」と呼ぶ)を任意の個数含むことが出来る:

上図で「全般」と名付けたマクロファイル中に5つの「命令」が既に作ってあるところ。実行の優先順位は上から下。並び順はいつでも変更可能。

「命令」の書き方に関する補遺

ヘルプを読んで分かりにくかった箇所について幾つかメモっておく。

%f%aの意味の違い

例えば私がチャンネルログ窓で#hogeを見ている時にマクロがチャンネル#moeのユーザの発言を拾った場合、%aの値は#hoge%fの値は#moeになる。

マクロを用いてコマンドを拡張する場合の注意

入力行の頭に/hogeと書いてやった場合、LimeChatはまず/hogeをマクロとして解釈しようとし、失敗した時にはそのままサーバに送信する(結果、通常のIRCコマンドとしてサーバ側で実行されることになる)…とヘルプには書いてあったが、既存のIRCコマンドをマクロで上書きしてやろうとしたら何故か失敗した。

上の例では何をやっているかというと、例えば私がいま「#veryverylongchannelname」というチャンネルにいて、そこで/actionコマンドを使う時に毎度毎度入力欄から

/action #veryverylongchannelname yawns

とか打ってやるのが面倒なので、これを

/a yawns

で済ませられるようにするもの。条件部の「コマンド」欄に「a」と書いてあるが、これを「action」にしたら 入力行から「/action ...」と打ち込んだ時に何も起きなくなってしまった。

チャンネル名の代わりにユーザ名を指定する


条件部の「チャンネル」の欄に 「#firefox」といった通常のチャンネル名でなくユーザ名を書くと、そのユーザ宛のトークの意味になるらしい。上の例では「チャンネル」に「%u」を指定することで「私宛のトーク(プライベートなやつ)」にマッチさせている。

同様に動作部の「送信先」にもチャンネル名だけでなくユーザ名を書くことが出来て、そうした場合にはマクロはチャンネルで発言するのではなく指定されたユーザに向けてトークを飛ばす。上の例では「%n」と指定することで「いま私にトークを飛ばして来たユーザ」にマッチさせている。

結局、上の例は「私宛にトークを飛ばして来た奴がいたら、全て『プライベートトークお断り』と(noticeで)返事せよ」の意味になる。