Module:RobloxStaff

local p = {} local link = require('Module:Player link')

p.data = { Admin = require("Module:RobloxStaff/Admin"), Former_Admin = { "Aeacus", "aleverns", "Arbolito", "Atrippy", "blockhaak", "BrightEyes", "chiefjustus", "clockwork", "CorgiParade", "DoriGray", "EchoDown", "EliteEinherjar", "Fractality", "goddessnoob", "Gordonrox24", "gorroth", "HawkeyeBandit", "Holly_Daze", "IltaLumi", "JacksSmirkingRevenge", "jahrblox", "Kamouraska", "K3yChain", "KBUX", "Kilran_SE", "Langoliers", "littlemizspider", "LittleParadise", "Luckymaxer", "luckymox", "madrak", "makmenace", "Motornerve", "MrDoomBringer", "mysticsnail", "MSE6", "OnlyTwentyCharacters", "Orgonzola", "Phil", "renderman", "RobloKen", "RobloSam", "RobloTim", "Roeblockmaster", "Rootie_Groot", "RowdieRoddy", "Scripter", "scubasomething", {"Shedletsky","Creative Director"}, "Shirsoft", "SlingshotJunkie", "Stealth Pilot", "Stoecker", "Tabemono", "tpadmin", "tweedsuit", "VaioBot", "Vexedly", "Vibhu", "Wookong", "yumyumcheerios", "ZDollars", },   Intern = { "alexnewtron", "BAUER102", "Aotrou", "be_nj", "burgundyernie", "cowbear16", "Crykee", "dr01d3k4", "GollyGreg", "Heimdyll", "kalypso3", "kiwon0905", "Lunya", "NoahWillCode", "Osyris", "polarpanda16", "SmoothBlockModel", "SoraProducer", "stunshocker", },   Former_Intern = { "1297827",       "AbstractAlex", "Aotrou", "BobaMuncher", "burgundyernie", "chiefsmoothie28", "CloneTrooper1019", "MadeInSeoul", "DarthfuzzyX", "Felix_Phoenix", "FutureWebsiteOwner", "Garnold", "jtbuilder1", "maxxz", "negoose", "Nexx", "nsgriff", "pa00", "Quenty", "riotmonkey91", "robloxoldo", "Sharksie", "shellc", "shreyerz", "StarWars", "TheGamer101", "Tomarty", "TorchedPork", "triyangle", "Unclear", "woot3", "Xsitsu", "zlib", },   Accelerator = { "2blox2quit", "Aesthetical", "Asleum", "AznDibs", "Bethink", "B_rcode", "Cindering", "Defaultio", "Dev_Anthony", "EchoZenkai", "EricThePianoGuy", "EvilArtist", "Fangous", "GGGGG14", "GunsBullets", "HenryDev", "Lethal682", "MasterDaniel", "MasterOfTheElements", "mightybaseplate", "MrWindy", "Myzta", "NewFissy", "NiceDrift", "NoAlias", "opplo", "Peaspod", "raquiles", "RickyTheFishy", "SmoothBlockModel", "Simoon68", "Tamara_X", "TCtully", "tyridge77", "vocksel", },   Incubator = { "2blox2quit", "berezaa", "EchoReaper", "EricThePianoGuy", "Injanity", "jameeish", "Kegstrude", "KrixYaz", "Polymorphic", "Ritzhu", "sk3let0n", "SmoothBlockModel", "Wheatlies", },   Former_Accelerator = { "Aesthetical", "AlgyLacey", "Alkan", "Asleum", "AxisAngle", "AznDibs", "B_rcode", "Ben_Est", "berezaa", "Bethink", "Biostream", "BrokenBone", "Buddyism", "BusyCityGuy", "ChadTheCreator", "Cindering", "CJ_Oyer", "Cody_Nelson", "Cracky4", "Crykee", "Dev_Anthony", "doneyes", "EchoZenkai", "EvilArtist", "Fangous", "FierceByte", "ForyxeV", "Frinigus", "FutureWebsiteOwner", "GGGGG14", "GunsBullets", "HenryDev", "hlelo_wolrd", "Imaginaerum", "Injanity", "InsanelyLuke", "Kinnis97", "Lethal682", "litozinnamon", "LordJurrd", "Maelstronomer", "MasterDaniel", "MasterOfTheElements", "mightybaseplate", "MrWindy", "Myzta", "NewFissy", "NiceDrift", "NoAlias", "NowDoTheHarlemShake", "OniiCh_n", "opplo", "Ozzypig", "paul2448", "Peaspod", "raquiles", "RickyTheFishy", "Roytt", "Sethalonian", "shellc", "shaylan007", "Simbuilder", "Simoon68", "Soybeen", "WhoBloxedWho", "Tamara_X", "TCtully", "TheAmazeman", "TheKatorium", "TigerCaptain", "TrainedDoorman", "tryidge77", "vocksel", "Widgeon", "XenoSynthesis", "yourock101", "zKevin", },   Former_Incubator = { "alexnewtron", "bizbot19", "Cetharis", "EchoReaper", "Frinigus", "HellaAric", "HomingBeacon", "Imaginaerum", "jameeish", "Kegstrude", "KrixYaz", "Locard", "Lunya", "Polyhex", "Ritzhu", "ScriptOn", "VordonZon", "Wheatlies", "Wsly", },   Roblox_Champion = { "24RightAngles", "Alvin_Blox", "Aotrou", "Blockfacebob", "BlockFaceSteve", "buildthomas", "Captain_Rando", "Crazyman32", "CycloneUprising", "dashadevf", "DeepSpaceGhost", "Dhammapada", "DreamingMind", "new_storm", "PeteyK473", "Ravenshield", "Seranok", "sircfenner", "Younite", "Ysko", },   Top_Contributor = require("Module:RobloxStaff/Top_Contributor") }

function p.getRole(name) -- Returns an array of titles this user has "Administrator", "Former Intern", etc local t = {} local pos = 1 for k,x in pairs(p.data) do       for i,v in pairs(x) do            if type(v) == "string" then if name:lower == v:lower then table.insert(t,pos,k) end elseif type(v) == "table" then if name:lower == v[1]:lower then table.insert(t,pos,k) end end end pos = pos + 1 end if #t == {} then return nil else return t end end

function p.getStaffPosition(name) -- Returns an array of positions this user has (eg. "Web Developer"), must have at least one array for them. local t = {} for k,x in pairs(p.data) do       for i,v in pairs(x) do            if type(v) == "table" then if name:lower == v[1]:lower then if #v == 2 then table.insert(t,v[2]) elseif #v > 2 then for i = 2,#v do                           table.insert(t,v[i]) end end end end end end if #t == {} then return nil else return t end end

function p.List(frame) -- Returns a bulleted list of all users in a specific group (eg. list of administrators) if not p.data[frame.args[1]] then return "Unknown" end local returnString = "" for i,v in pairs(p.data[frame.args[1]]) do       if type(v) == "string" then returnString = returnString.."\n* "..link.player_link({player=v}) elseif type(v) == "table" then returnString = returnString.."\n* "..link.player_link({player=v[1]}).." – "..v[2] end end return returnString end

function p.Len(frame) -- Same as p.List, but returns length rather than a bulleted list. if not p.data[frame.args[1]] then return "Invalid staff category" end local count = #p.data[frame.args[1]] return tostring(count) end

return p