function Config(src) {
var dir = '';
var title = '';
var deck_lv = 4;
var ip_chek = 1;
var topic_mes = '大会参加受付中。参加希望者は「@参加」と発言してください。現在参加者は';
var org_card = 0;
var time = 35;
var channel = '#幻想ノ宴';
var sh_mes = '時間になりました。';
switch (src) {
case 't': return title
case 'd': return dir;
case 'dl': return deck_lv;
case 'i': return ip_chek;
case 'top': return topic_mes;
case 'org': return org_card;
case 'tm': return time;
case 'ch': return channel;
case 'sh': return sh_mes;
}
}
var zen_table = new Array("。", "「", "」", "、", "・", "ヲ", "ァ", "ィ", "ゥ", "ェ","ォ", "ャ", "ュ", "ョ", "ッ", "ー", "ア", "イ", "ウ", "エ","オ", "カ", "キ", "ク", "ケ", "コ", "サ", "シ", "ス", "セ","ソ", "タ", "チ", "ツ", "テ", "ト", "ナ", "ニ", "ヌ", "ネ","ノ", "ハ", "ヒ", "フ", "ヘ", "ホ", "マ", "ミ", "ム", "メ","モ", "ヤ", "ユ", "ヨ", "ラ", "リ", "ル", "レ", "ロ", "ワ","ン", "゛", "゜");
var reimu = new Array("霊夢","博麗","れいむ","はくれい","レイム","ハクレイ","reimu","hakurei","紅白","巫女","貧乏巫女","腋","靈夢");
var marisa = new Array("魔理沙","霧雨","まりさ","きりさめ","マリサ","キリサメ","marisa","kirisame","白黒","黒白");
var sakuya = new Array("咲夜","十六夜","さくや","いざよい","サクヤ","イザヨイ","sakuya","izayoi","メイド","pad","パッド");
var youmu = new Array("妖夢","魂魄","ようむ","こんぱく","ヨウム","コンパク","youmu","konpaku","よーむ","みょん");
var yukari = new Array("紫","ゆかり","ユカリ","yukari","ばばぁ","ばばあ","ゆかりん","すきま","スキマ");
var alice = new Array("アリス","マーガトロイド","ありす","まーがとろいど","alice","margatroid");
var remilia = new Array("レミリア","れみりあ","remilia","レミ","レミィ","れみりあ","れみりゃ","おぜうさま","お嬢様");
var yuyuko = new Array("幽々子","西行寺","ゆゆこ","さいぎょうじ","ユユコ","サイギョウジ","yuyuko","saigyouji","ゆゆ様","@","ドリキャス","ゆっこ","ゆゆさま");
var flandre = new Array("フランドール","ふらんどーる","flandre","フラン","ふらん","妹様");
var patchouli = new Array("パチュリー","ノーレッジ","ぱちゅりー","のーれっじ","patchouli","knowledge","パチュ","パチェ","紫もやし","むらさきもやし","パッチュ","パッチェ","オアチュリー");
var meirin = new Array("美鈴","紅","めーりん","ほん","meirin","hong","めーりん","くれない","みすず","ほん","みりん","チャイニーズ","中国");
var kaguya = new Array("輝夜","蓬莱山","かぐや","ほうらいさん","カグヤ","ホウライサン","kaguya","houraisan","てるよ","ぐや","家具屋","姫様","蓬莱ニート","にーと","ニート");
var eirin = new Array("永琳","八意","えいりん","やごころ","エイリン","ヤゴコロ","eirin","yagokoro","えーりん","師匠","映倫");
var reisen = new Array("鈴仙","優曇華院","イナバ","れいせん","うどんげいん","いなば","レイセン","ウドンゲイン","reisen","udongein","inaba","うどんげ","座薬","うどん","新参ホイホイ");
var ran = new Array("藍","らん","ラン","ran","狐","藍様","テンコー","すっぱ","スッパ");
var chen = new Array("橙","ちぇん","チェン","chen","だいだい");
var prismriver = new Array("プリズムリバー","ぷりずむりばー","prismriver","プリバ","虹川","プリバー","ぷりば");
var lunasa = new Array("プリズムリバー","ルナサ","るなさ","lunasa","ルナ姉","るなっさ","ルナ坊");
var marlin = new Array("プリズムリバー","メルラン","めるらん","marlin","めるぽ","メルポ","ガッ","mail欄");
var lyrica = new Array("プリズムリバー","リリカ","りりか","lyrica");
var mokou = new Array("妹紅","藤原","もこう","ふじわらの","モコウ","フジワラノ","mokou","fujiwarano","もこー","もこ","もこたん","もうこ","もっこす","ふじわら");
var keine = new Array("慧音","上白沢","けいね","かみしらさわ","ケイネ","カミシラサワ","keine","kamishirasawa","けーね","きもけーね","きもいけーね");
var suika = new Array("萃香","伊吹","すいか","いぶき","スイカ","イブキ","suika","ibuki","西瓜","suica","つるぺた");
var cirno = new Array("チルノ","ちるの","cirno","⑨","バカ","馬鹿","ばか");
var wriggle = new Array("リグル","ナイトバグ","りぐる","ないとばぐ","wriggle","nightbug","りぐるん","g");
var mystia = new Array("ミスティア","ローレライ","みすてぃあ","ろーれらい","mystia","lorelei","みすちー","ミスティ","みすち","小骨","鶏肉");
var aya = new Array("文","射命丸","あや","しゃめいまる","アヤ","シャメイマル","aya","syameimaru","写メール","ブンブン丸","ブン屋","あやや");
var komachi = new Array("小町","小野塚","こまち","おのづか","コマチ","オノヅカ","komachi","onoduka","こまっちゃん","きゃん");
var yuuka = new Array("幽香","風見","ゆうか","かざみ","ユウカ","カザミ","yuuka","kazami","ゆうかりん","ゆーかちゃん");
var eiki = new Array("四季映姫","ヤマザナドゥ","しきえいき","やまざなどぅ","シキエイキ","shikieiki","yamaxanadu","四季","映姫","四季様","映姫様","えーき","ザナ様","ザナたん","山田","閻魔様");
var hina = new Array("雛","鍵山","ひな","かぎやま","ヒナ","カギヤマ","hina","kagiyama","ひなりん","ドリる","厄");
var nitori = new Array("にとり","河城","かわしろ","ニトリ","カワシロ","nitori","kawashiro","にとりん","かっぱ","nitoro","ゆとり","ntr");
var sanae = new Array("早苗","東風谷","さなえ","こちや","サナエ","コチヤ","sanae","kochiya","青巫女","トウフヤ");
var kanako = new Array("神奈子","八坂","かなこ","やさか","カナコ","ヤサカ","kanako","yasaka","みさえ","王虎","ガンキャノン","キャノ子様","オンバシラ");
var suwako = new Array("諏訪子","洩矢","すわこ","もりや","スワコ","モリヤ","suwako","moriya","あーうー","蛙","ケロちゃん");
var iku = new Array("衣玖","永江","いく","ながえ","イク","ナガエ","iku","nagae","桑芦源維","ドリル","サタデーナイトフィーバー","ミミガー");
var tenshi = new Array("天子","比那名居","てんし","ひなない","テンシ","ヒナナイ","tenshi","hinanai","てんこ","有頂天子","ちこりん","バーミヤン","オーロラ","漬物石","ドッスン","ドm");
var parsee = new Array("パルスィ","水橋","ぱるすぃ","みずはし","ミズハシ","parsee","mizuhashi","橋姫","ぱるしー","ぱるちー","パルスィート","ぱるぱる","パルシステム","農家");
var yuugi = new Array("勇儀","星熊","ゆうぎ","ほしぐま","ユウギ","ホシグマ","yuugi","hoshiguma","姐さん","☆ぐまー","遊戯");
var satori = new Array("さとり","サトリ","satori","さとりん","ベアード様","小五ロリ","ちとりちま");
var rin = new Array("燐","火焔猫","りん","かえんびょう","リン","カエンビョウ","rin","kaenbyou","おりん","おりいん","ゴス猫","ネコロマンサー","ヘルにゃん","にゃーん","おりんりんランド");
var utsuho = new Array("空","霊烏路","うつほ","れいうじ","ウツホ","レイウジ","utsuho","reiuji","おくう","うにゅほ","バハムー子","バカムート","ダイソン");
var koishi = new Array("こいし","コイシ","koishi","こいしちゃん","小石","恋し","グリコ","バスガイド","荒ぶる鷹のポーズ","荒ぶるグリコのポーズ");
var namelist = new Array(reimu,marisa,sakuya,youmu,yukari,alice,remilia,yuyuko,flandre,patchouli,meirin,kaguya,eirin,reisen,ran,chen,prismriver,lunasa,marlin,lyrica,mokou,keine,suika);
var namelist2 = new Array(cirno,wriggle,mystia,aya,komachi,yuuka,eiki,hina,nitori,sanae,kanako,suwako,iku,tenshi,parsee,yuugi,satori,rin,utsuho,koishi);
var active = 0;
var chList = new Array();
var chListFile = "ipreplace_chlist.txt";
function h2z_kana(src) {
var i, code, next;
var str = new String;
var len = src.length;
for (i = 0; i < len; i++) {
var c = src.charCodeAt(i);
if (c >= 65377 && c <= 65439) {
code = zen_table[c - 65377];
if (i < len - 1) {
next = src.charCodeAt(i+1);
if (next == 65438 && c == 65395) {
code = "ヴ";
i++;
} else if (next == 65438 && ((c >= 65398 && c <= 65412) || (c >= 65418 && c <= 65422))) {
code = String.fromCharCode(code.charCodeAt(0)+1);
i++;
} else if (next == 65439 && (c >= 65418 && c <= 65422)) {
code = String.fromCharCode(code.charCodeAt(0)+2);
i++;
}
}
str += code;
}else { str += src.charAt(i); }
}
return str;
}
function z2h_ascii(src) {
var str = new String;
var len = src.length;
for (var i = 0; i < len; i++) {
var c = src.charCodeAt(i);
if (c >= 65281 && c <= 65374 && c != 65340) { str += String.fromCharCode(c - 65248); }
else if (c == 8217) { str += String.fromCharCode(39); }
else if (c == 8221) { str += String.fromCharCode(34); }
else if (c == 12288) { str += String.fromCharCode(32); }
else if (c == 65507) { str += String.fromCharCode(126); }
else if (c == 65509) { str += String.fromCharCode(92); }
else { str += src.charAt(i); }
}
return str;
}
function z2h_digit(src) {
var str = new String;
var len = src.length;
for (var i = 0; i < len; i++) {
var c = src.charCodeAt(i);
if(c >= 65296 && c <= 65305) { str += String.fromCharCode(c - 65248); }
else { str += src.charAt(i); }
}
return str;
}
function h2z_digit(src) {
var str = new String;
var len = src.length;
for (var i = 0; i < len; i++) {
var c = src.charCodeAt(i);
if(c >= 48 && c <= 57) { str += String.fromCharCode(c + 65248);}
else { str += src.charAt(i); }
}
return str;
}
function event::onLoad(){
loadChList();
}
function loadChList(){
var file = openFile(chListFile);
if(file){
var line;
while((line = file.readLine())!= null) chList[ line.toLowerCase() ] = 1;
file.close();
}
}
function saveChList(){
var file = openFile(chListFile,false);
if(file){
for (var i in chList) if(chList[i]) file.writeLine(i.toLowerCase());
file.truncate();
file.close();
}
}
function charaCheck(e,channel){
e = e.replace(/[0-9!"#$%&';:,. @\\]/g,'');
if(Config('org')) namelist = namelist.concat(namelist2);
for(var i = 0; i < namelist.length; i++) {
for(var j = 0; j < namelist[i].length; j++) {
re = new RegExp("^"+namelist[i][j]+"$");
if(e.match(re)) return namelist[i][0];
}
}
return null;
}
function IpCheck(lines,prefix,type) {
for(var i = 0; i < lines.length; i++ ) {
if(lines[i].match(prefix)) {
if(type == 1) {
var info = lines[i].split(/<>/);
return info;
}else {
var info = lines[i].split(/<>/);
info[2] = type;
lines[i] = info.join('<>');
return lines;
}
}
}
}
function IPSearch(prefix){
var s;
s = executeCommand("nslookup -timeout=5 -retry=3 " + prefix.address);
// log(s);
ip_address = s.split(/\r\n/);
return ip_address;
}
function showTime() {
channel = Config('ch');
if(active) send(channel,Config('sh'));
}
function getRegExp(i,t){
if(i.match(t)) return RegExp.$1;
else return "取得不可能";
}
function AXO_write(charset,filename,src) {
var stream = new ActiveXObject('ADODB.Stream');
stream.type = 2;
stream.charset = charset;
stream.open();
stream.writeText(src);
stream.saveToFile(filename, 2);
stream.close();
return;
}
function AXO_read(charset,filename) {
var stream = new ActiveXObject('ADODB.Stream');
stream.type = 2;
stream.charset = charset;
stream.open();
stream.loadFromFile(filename);
var str = stream.readText(-1);
stream.close();
return str;
}
function event::onChannelText(prefix, channel, text) {
var title = Config('t');
var dir = Config('d');
var deck_lv = Config('dl');
var ip_chek = Config('i');
var fso = new ActiveXObject('Scripting.FileSystemObject');
if(!fso.FolderExists(dir)){ dir = userScriptFilePath + '/'; }
var filename = dir + title + '.xml';
var ipfile = dir + 'ip_chek.txt';
var charset = 'utf-8';
if(chList[channel.toLowerCase()]) {
if(text.match(/^(@|@)(参加)/)) {
var ip = IPSearch(prefix);
ip[2] = ip[2].replace(/Name: /,'');
ip[3] = ip[3].replace(/Address: /,'');
var ip_search = '';
if(!fso.FileExists(filename)) var s = "" + title + "";
else {
var s = AXO_read(charset,filename);
s = s.replace(/<\/Tournament>/,'');
}
if(fso.FileExists(ipfile)) ip_search = AXO_read(charset,ipfile);
if(s.match(prefix.nick) || (ip_chek && ip_search.match(ip))) send(channel, prefix.nick + 'さんは参加受付が完了しています。');
else {
var num = s.match(/+/g) ? s.match(/+/g).length + 1 : 1;
var host = (text.match(/(不可|無理|ふか|むり|出来ません|なれな|なれま)/)) ? 'false' : 'true';
var info = s + "" + num + "" + prefix.nick + "false"+ host + "";
AXO_write(charset, filename, info);
ip_search = ip_search + prefix.nick + '<>' + ip[3] + '<>' + host + '<>' + ip[2] + '\r\n'
AXO_write(charset, ipfile, ip_search);
send(channel, prefix.nick + 'さんの参加を受け付けました。');
var topic_mes = Config('top');
topic_mes += num.toString();
topic_mes += '人';
topic(channel,topic_mes);
}
}else if(text.match(/^(@|@)(デッキ|デッキ)/)) {
if(!fso.FileExists(filename)) send(channel,'だれも大会に参加されていません');
else {
var s = AXO_read(charset,filename);
var ip_search = AXO_read(charset,ipfile);
if(!s.match(prefix.nick)) {
var lines = ip_search.split(/\r\n/);
var nick_name = IpCheck(lines,prefix.address,1)[0];
}
else var nick_name = prefix.nick;
if(s.match(nick_name)) {
var mes = h2z_kana(text);
var len = s.length;
var n = s.search(nick_name);
var str1 = s.substring(0,s.indexOf("",n)+6);
var str2 = s.substring(s.indexOf("",n),len);
mes = mes.replace(/^(@|@)(デッキ|デッキ)/,'');
mes = mes.replace(/^( | )/,'');
mes = z2h_digit(mes);
var x = mes.match(/\d+/g) ? mes.match(/\d+/g) : 0;
var name = [],chname = [];
var comp = '';
var check_flag = 0;
for (var i = 0; i < x.length; i++) {
name[i] = mes.substring(0,mes.search(x[i])+1);
mes = mes.replace(name[i],'');
name[i] = z2h_ascii(name[i]);
chname[i] = charaCheck(name[i].toLowerCase(),channel);
if(chname[i] != null) check_flag += parseInt(x[i]);
}
if(check_flag != deck_lv) send(channel,nick_name + 'さんのデッキが不正です。');
else {
for (var i = 0; i < x.length; i++) {
var w = i;
for(var j = w + 1; j < x.length;j++) {
if(chname[w].match(chname[j])) {
chname[j] = null;
x[w] = parseInt(x[w]) + parseInt(x[j]);
i++;
}
}
}
for(var i = 0; i < x.length; i++) if(chname[i] != null) comp = comp + chname[i] + x[i] + ":";
comp = comp.replace(/:$/,'');
comp = h2z_digit(comp);
AXO_write(charset,filename,str1 + comp + str2);
var filename = "Standings_round0.txt";
var ax_dir = fso.GetFolder(dir);
var e = new Enumerator(ax_dir.Files);
for(; !e.atEnd(); e.moveNext()){
var mes = e.item().Name;
if(mes.match(/Standings_round/)) if(mes > filename) filename = mes;
}
filename = dir + filename;
if(fso.FileExists(filename)) {
charset = '_autodetect';
var src = AXO_read(charset,filename);
var lines = src.split(/\r\n/);
for(var i = 0; i < lines.length; i++){
var line = lines[i];
if(line.match(/(L/) && line.match(nick_name)) {
var char = getRegExp(s,"(L(.+?))");
if(char == '取得不可能') {
var comp2 = "(L"+comp+")";
lines[i] = lines[i].replace(/(L)/,comp2);
}
else lines[i] = lines[i].replace(char,comp);
}
}
lines2 = lines.join('\r\n');
AXO_write(charset,filename,lines2);
}
send(channel,prefix.nick + 'さんの' + comp + 'を登録しました。');
}
}else { send(channel,prefix.nick + 'さんは大会に参加されていません'); }
}
}else if(text.match(/^デッキリスト/) && prefix.nick == myNick) {
var filename = "Standings_round0.txt";
var ax_dir = fso.GetFolder(dir);
var e = new Enumerator(ax_dir.Files);
for(; !e.atEnd(); e.moveNext()){
var mes = e.item().Name;
if(mes.match(/Standings_round/)) if(mes > filename) filename = mes;
}
filename = dir + filename;
charset = '_autodetect';
var src = AXO_read(charset,filename);
var lines = src.split(/\r\n/);
var unsub_list = '';
for(var i = 0; i < lines.length; i++) {
if(lines[i].match(/(L/) && !lines[i].match(/(L)/)) {
var list = getRegExp(lines[i]," (.+?))").replace(/(L/," ");
send(channel,list);
}else if(lines[i].match(/(L)/)) unsub_list += getRegExp(lines[i]," (.+?)L").replace(/(/,"、");
}
unsub_list = unsub_list.replace(/、$/,'');
if(unsub_list != '') send(channel,"未提出:" + unsub_list);
}
}
if(text.match(/^(@|@)(リスト|リスト)/)) {
if(!fso.FileExists(filename)) send(channel,'だれも大会に参加されていません');
else {
var s = AXO_read(charset,filename);
var mes = s.match(/<\/name>/g);
var x = s.match(/false<\/isHostable>/g) ? s.match(/false<\/isHostable>/g) : 0;
mes.length--;
var member = '';
for(var i = 0,n = 0; i < mes.length; i++) {
n = s.indexOf("",n) + 1;
member += s.substring(s.indexOf("",n)+6,s.indexOf("",n));
member += '、';
}
member = member.replace(/、$/,'');
send(channel, member);
send(channel, '計' + mes.length.toString() + '人');
var member = '';
for(var i = 0,n = s.length; i < x.length; i++) {
var j = s.lastIndexOf("false",n);
member += s.substring(s.lastIndexOf("",j)+6,s.lastIndexOf("",j));
member += '、';
n = s.lastIndexOf("false",n)-1;
}
member = member.replace(/、$/,'');
if(x != 0) send(channel,'ホスト不可 ' + member);
send(channel,'「@ホスト」で可、不可の変更ができます。');
}
}else if(text.match(/^(@|@)(ホスト|ホスト|host)/)) {
if(!fso.FileExists(filename)) send(channel,'だれも大会に参加されていません');
else {
var s = AXO_read(charset,filename);
var ip_search = AXO_read(charset,ipfile);
if(!s.match(prefix.nick)) {
var lines = ip_search.split(/\r\n/);
var name = IpCheck(lines,prefix.address,1)[0];
}
else var name = prefix.nick;
if(s.match(name)) {
var len = s.length;
var n = s.search(name);
var str1 = s.substring(0,s.indexOf("",n)+12);
var str2 = s.substring(s.indexOf("",n),len);
var host = s.substring(s.indexOf("",n)+12,s.indexOf("",n));
host = (host.match(true)) ? 'false' : 'true';
var type = (host.match(true)) ? '可' : '不可';
AXO_write(charset,filename,str1 + host + str2);
var lines = ip_search.split(/\r\n/);
lines = IpCheck(lines,name,host);
ip_search = lines.join('\r\n');
ip_search += '\r\n';
AXO_write(charset,ipfile,ip_search);
send(channel,prefix.nick + 'さんのホスト' + type + 'に変更しました');
}else { send(channel,prefix.nick + 'さんは大会に参加されていません'); }
}
}else if(text.match(/^(@|@)(報告)/)) {
var ip_search = AXO_read(charset,ipfile);
text = z2h_ascii(text);
if(text.match(/(勝|○|1|o|win)/)) var vod = 1;
else if(text.match(/(引き分け|△|ドロー|draw)/)) var vod = 0;
else {
send(channel,'勝者が報告してください。');
return
}
var filename = "Pairings_round0.txt";
var ax_dir = fso.GetFolder(dir);
var e = new Enumerator(ax_dir.Files);
for(; !e.atEnd(); e.moveNext()){
var mes = e.item().Name;
if(mes.match(/Pairings_round/)) if(mes > filename) filename = mes;
}
filename = dir + filename;
if(fso.FileExists(filename)) var s = AXO_read(charset,filename);
if(!s.match(prefix.nick) && !ip_search.match(prefix.address)) send(channel, prefix.nick+'さんは大会に参加されていません');
else {
// 結果書き出しファイルのパスfilenameに設定
filename = dir + 'result.txt';
/*--二重投稿のチェック用--*/
//ファイルの存在を確認し,存在すれば読み込む
if(fso.FileExists(filename)) var res_s = AXO_read(charset,filename);
var res_lines = res_s.split(/\r\n/);
// ニックネームが変わっていた場合に名前を変更前に再設定
if(!s.match(prefix.nick)) {
var lines = ip_search.split(/\r\n/);
var name = IpCheck(lines,prefix.address,1)[0];
}
else var name = prefix.nick;
// 発言者に対応する卓情報文字列を取得
var mes = lines[i].substring(0,lines[i].search(/Host/)-1);
// 二重投稿のチェック
var i; // 番兵代わりに使う&次のループでも使うので外で宣言
for(i=0;i b[0]) ? 1 : -1;
}
return (a[1] > b[1]) ? 1 : -1;
});
for(var i=0; i < lines.length; i++) send(channel, table[i][0]);
file.close();
}
}else if(text.match(/^(\d+|0|1|2|3|4|5|6|7|8|9)(回戦|海鮮|回線|開戦)(始め|開始|スタート)/) && prefix.nick == myNick) {
var filename = "Pairings_round0.txt";
var ax_dir = fso.GetFolder(dir);
var e = new Enumerator(ax_dir.Files);
for(; !e.atEnd(); e.moveNext()){
var mes = e.item().Name;
if(mes.match(/Pairings_round/)) if(mes > filename) filename = mes;
}
filename = dir + filename;
if(fso.FileExists(filename)) var s = AXO_read(charset,filename);
var ip_search = AXO_read(charset,ipfile);
var lines = s.split(/\r\n/);
var lines2 = ip_search.split(/\r\n/);
for(var i = 0; i < lines.length; i++) {
for(var j = 0; j < lines2.length; j++) {
var len = lines[i].length;
var host = lines[i].substring(lines[i].search(/Host/),len);
var info = lines2[j].split(/<>/);
if(host.match(info[0]) && info[2] == 'true') lines[i] += "(" + info[1] + ")";
}
send(channel,lines[i]);
}
set_time = Config('tm');
today = new Date();
h = today.getHours();
m = today.getMinutes();
m += set_time;
if(m >= 60) {
h += 1;
m -= 60;
}
mes = z2h_digit(text);
var num = mes.match(/\d+/);
topic(channel,num+"回戦"+h.toString()+"時"+m.toString()+"分まで");
active = 1;
timerID = setInterval(showTime,set_time*60000);
var filename = dir + 'result.txt';
if(fso.FileExists(filename)) fso.DeleteFile(filename);
}else if(text.match(/^終了/) && prefix.nick) {
active = 0;
clearInterval(timerID);
}else if((text.match(/^参加登録を有効/) || text.match(/^デッキ登録を有効/)) && prefix.nick == myNick){
chList[ channel.toLowerCase() ] = 1;
send(channel,"登録を開始しました");
saveChList();
}else if((text.match(/^参加登録を無効/) || text.match(/^デッキ登録を無効/)) && prefix.nick == myNick){
chList[ channel.toLowerCase() ] = 0;
send(channel,"登録を止めました");
saveChList();
}
fso = null;
}