1950 への返信

ChannelMember のインスタンス取得方法についてTeloo - No.1950
スクリプトの ChannelMember オブジェクトについてお尋ねしたいことがあります。

#GetChannelMemberTest チャンネルに4人参加しているときに、スクリプトで

function event::onChannelText(prefix, channel, text) {
if (text.match(/^get-channel-member$/)) {
readyChannel = findChannel("#GetChannelMemberTest");
for (member in readyChannel.members) {
send(channel, "Hello " + member.nick);
}
}
}

と設定し、「get-channel-member」と IRC で入力したところ、

(teloo) Hello undefined
(teloo) Hello undefined
(teloo) Hello undefined
(teloo) Hello undefined

と表示されました。

以上の方法がうまくいかなかったので、指定したチャンネル内にいる ChannelMember の配列を取得する方法をどうすればよいか悩んでいます。

ご教授のほど、よろしくお願いします。

Le - No.1952
単純にfor-in文の使い方を間違えていますね。この場合memberはカウンタになりますので・・・
function event::onChannelText(prefix, channel, text) {
   if (text.match(/^get-channel-member$/)) {
   readyChannel = findChannel("#GetChannelMemberTest");
      for (member in readyChannel.members) {
      send(channel, "Hello " + readyChannel.members[member].nick);
      }
   }
}
みたいな感じでしょうか。
Teloo - No.1954
迅速なお返事ありがとうございます。

> 単純にfor-in文の使い方を間違えていますね。この場合memberはカウンタになりますので・・・

初歩的なミスでした。すみません。
教えていただきました方法を試したところ、無事に正しく動作しました。

ありがとうございました。
Psychs - No.1955
思った通りに動かないなと思ったら、その周辺の変数を log() で出力してみるといいですよ。

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

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

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