ニックの一部からフルネームを引っ張ってくる
ちまちまと続けてテスト中です。
「ニックの一部を指定するとチャンネル参加者全部から該当する名前を文字列として返してくれる関数があったら便利」と思い立って、作ってみました。
番外:print()メソッドとIRCのオブジェクト構造 - ten-youの日記は、実はこれの副産物です。
というかコレ自体も副産物なのですが! ……orz
おかしい。目的が一歩一歩遠ざかっていく……!
中身
スクリプトはこんな感じ。
//名前の一部とチャンネル名(テキスト型)を引数として渡すと、参加者のフルネームニックを返す関数 function funcNameSeek(partOfName, channnel) { var objectChannel = findChannel(channnel); //Channelオブジェクト var arrChannelMembers = objectChannel.members; //チャンネルに参加しているメンバーの名前の配列 var numMembers = arrChannelMembers.length; //チャンネルの参加人数 var fullName = ''; //目当てのメンバーのニックネーム(フル) //arrChannelMembersから名前の一部が同じメンバー名を探す var i = 0; //添え字 do { if (arrChannelMembers[i].nick.match(partOfName)){ fullName = arrChannelMembers[i].nick; } i = i + 1; } while ((i < numMembers)&&(fullName == '')); //指定された名前の一部を持つメンバー名があったかどうかチェック。 if (fullName == ''){ return('Error!'); } else { return(fullName); } }
他の関数から呼び出せるようにしときました。
これで今作ろうとしてるのにも、カードシステムにも持っていける、はず!
ニックの一部とチャンネル名(String)を引数として渡すと、そのチャンネルに参加してるメンバーの中から該当するニックを探し出し、戻り値として返します。
もし該当するメンバーがいなかったら「Error!」と返します。
テスト結果はこんな感じ。
22:29 (Dice_B) % ←「tiki」で検索
22:29 (Dice_B) Error!!イター!!
22:29 (Dice_B) % ←「GM」で検索
22:29 (Dice_B) ten-youGMイター!!
22:30 (ten-youGM) % ←「GM」で検索
22:30 (Dice_B) ten-youGMイター!!
チャンネルに参加しているメンバーは「Dice_B」「ten-you」「ten-youGM」「tententen」の4人。
スクリプトの持ち主は「Dice_B」。
探したいニックの一部は、1回目「tiki」、2〜3回目「GM」。
という条件で動かしました。
……今回は、「どんなニックの人が参加するのか」分かってるから決めうちで書いてます。
でもたとえば「GM」が含まれるニックの人が2人以上いた場合(あまりない事態ですが)、1人目を返すんですよね。このままだと。
これをどうするかは今後の課題として。