1427 への返信

文章をクリップボードへ送りたいkumakuma - No.1427
はじめまして、マクロ機能を使っていろいろ試しているのですがわからないので書き込みました。

目的は、LimeChatで書き込まれるチャット文章を随時クリップボードへ送る。です(すべてのユーザーの書き込み)

私が試していたマクロ機能は以下になります

ユーザー:%mel*
コマンド:privmsg
チャンネル:
メッセージ:
自分の状態:なし
送信者の状態:なし
動作:menu
送信先:
動作の情報:copy %m
ここで実行を止める:ノーチェック

これで試しているのですが、うまく動作してくれません
マクロの書き方が正しくないのか、クリップボードに送る機能そのものが無いのか悩んでいます。
ご回答よろしくお願いします。
Psychs - No.1428
> 動作の情報:copy %m

というように、引数を渡すことはできません。
マクロやスクリプトにクリップボードを操作する機能はないので、
外部コマンドを起動するなどしてください。
kumakuma - No.1429
わかりました。ありがとうございました。
Psychs - No.1448
2.29 でスクリプトからクリップボードを操作できるようにしました。
らい - No.1476
いつもありがとうございます。

> 動作の情報:copy %m

対応しましたとありますが、使い方は上記の使い方であっておりますでしょうか。
動作をprintにして見ると正常にメッセージ送信が行われることを確認しているため、条件判定部分のミスではないとは思うのですが、
動作の情報の部分にcopy %mを記入してもクリップボードに入らないようです。

Ver2.29にて確認を行いました。
よろしくお願いします。
Psychs - No.1477
マクロではなく、スクリプトでの対応です。
Mcvein - No.1501
スクリプトでのクリップボード操作への対応とありますが、
実際スクリプトに
if(prefix.nick != myNick || prefix.nick == myNick){
if(text.match(/a/)){
 ・
 ・
 ・
clipboard.setText(ip + ':10800');
}
}
のように書き込んで実行すると、
自分の発言時のみチャットにクリップボードに送った内容が
自分の発言として書き込まれてしまいます。
これはどういうことなのでしょう?


Psychs - No.1502
スクリプトが断片的でよくわかりません。
全文を貼りつけて、何をやりたいのかわかるように書いてもらえますか。
Mcvein - No.1504
すみません、確かにそうですよね...

function event::onChannelText(prefix, channel, text){
if (channel.match(/^#Script_Test$/) || channel.match(/^#hisouten_kuso$/)){
if (prefix.nick != myNick || prefix.nick == myNick){
if (text.match(/ip/) || text.match(/いp/)){
var aaa;
aaa = executeCommand("nslookup " + prefix.address); //nslookupでホストからIPを逆引き
var bbb;
bbb = aaa.replace(/192\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/,""); //経由されたローカルIPも返ってくるのでそれを取り除く
var ccc;
ccc = bbb.match(/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/); //残った文字列からIPアドレスに当たるものを正規表現で抽出。
var ddd;
ddd = ccc.toString(); //文字列に変換
var eee;
eee = ddd.replace(/\,([0-9]{1,3})\,([0-9]{1,3})\,([0-9]{1,3})\,([0-9]{1,3})/,""); //なぜかカンマ区切りのIPアドレスも返されるのでそれを取り除く
clipboard.setText(eee + ':10800'); //クリップボードへ移す
}
}
}
}

要は別スレにあるIPを表示するスクリプトを利用して、
クリップボードへIPを移すスクリプトを作りたいと思っておりました。
Psychs - No.1505
作りたいのは、他の人が「ip」のように発言したときに、
IPアドレスをクリップボードに入れるスクリプトでしょうか。

以下のようにすると、動いているようです。
困ったら、処理途中の状態を log 関数でスクリプトコンソールに出力して、
確認するようにしてください。

function event::onChannelText(prefix, channel, text) {
if (channel.match(/^#Script_Test$/) || channel.match(/^#hisouten_kuso$/)) {
if (text.match(/ip/) || text.match(/いp/)) {
var s;
s = executeCommand("nslookup " + prefix.address);
log(s);
s = s.replace(/192\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/,'');
log(s);
s = s.match(/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/);
log(s);
s = s + ':10800';
log(s);
clipboard.setText(s);
}
}
}

以下の項目を必ず守ってください。守っていない書き込みは無視されるかも知れません。

あなたにとっては1回の質問でも、答える側は1回ではないことを理解してください。

  • 文章はきちんと状況が伝わるように丁寧に書いてください。
  • 話し言葉での書き込みは禁止します。
  • 過去ログを検索して確認してから書き込んでください。
  • 内容がわかるタイトルをつけること。要望する場合は[要望]を先頭につけること。
  • 動作確認はかならず最新版で行ってください。
  • 不適切な文章は、管理人が削除、編集することがあります。
名前*
メッセージ*
パスワード (編集・削除に使用。16文字以内)