[Turn off line numbering]1: arg cmdstr, cmd, args; 2: var opts, f, d, cur_channels, cd_keys, cd_values, i, alias, db, active, msg, match_with, match_pattern, tmp, form, add, o; 3: 4: (> .perms(caller(), 'command) <); 5: [args, opts] = args; 6: o = opts.slice(1); 7: if ((f = (| "f?ull" in o |))) 8: f = opts[f][3]; 9: if ((d = (| "d?etailed" in o |))) 10: d = opts[d][3]; 11: if (listlen(args) > 1) { 12: catch any { 13: cmd = (| ($channel_db.search(args[1]))[1] |); 14: return .channel_members(cmd, f); 15: } with { 16: return traceback()[1][2]; 17: } 18: } 19: cd_keys = channel_dict.keys(); 20: cd_values = channel_dict.values(); 21: cur_channels = f ? $channel_db.database().values().slice(1) : cd_values; 22: if (args) { 23: match_with = (| .get_setting("match-with", $programmer) |) || 'match_pattern; 24: match_pattern = (| args[1][1] |) || (| .get_setting("match-default", $programmer) |) || "*"; 25: cur_channels = filter f in (cur_channels) where (f.to_string().(match_with)(match_pattern) != 0); 26: } 27: if (!cur_channels) 28: return "No channels found."; 29: msg = []; 30: add = []; 31: for i in (cur_channels) { 32: alias = (| cd_keys[i in cd_values] |) || ""; 33: db = (| $channel_db.search(tostr(i)) |); 34: if (type(db) == 'list) { 35: msg += [[active_channels.contains(i) ? "*" : " ", alias, tostr(db[1]), db[7] || "<no description>"]]; 36: form = "%26r: %50l"; 37: if (d) { 38: tmp = [form.format("Number of users", tostr(db[2])), form.format("Owner", db[5].name()), form.format("Managers", db[6].mmap('namef, 'name).to_english())]; 39: if (db[3]) 40: tmp += [form.format("Join Lock", db[3].lock_name())]; 41: if (db[4]) 42: tmp += [form.format("Leave Lock", db[4].lock_name())]; 43: if (db[8]) 44: tmp += [form.format("Use Lock", db[8].lock_name())]; 45: add += [tmp]; 46: } 47: } else { 48: msg += [[active_channels.contains(i) ? "*" : " ", alias, "", "Channel not in database!"]]; 49: } 50: refresh(); 51: } 52: msg = msg.transpose().tabulate([["", ""], ["Alias", "-----"], ["Channel", "-------"], ["Description", "-----------"]]); 53: if (d) 54: msg = [msg[1], msg[2], @map i in [3 .. msg.length()] to ([msg[i]] + add[i - 2]).sum()]; 55: return [@msg, " -----"];
// Created 24-Jul-1996 as a part of ColdCore, see: @help Credit