FANDOM


local p = {}
local link = require('Module:Player link')
 
p.data = {
    Admin = require("Module:RobloxStaff/Admin"),
    Former_Admin = {
        {"2blox2quit","Events Manager"},
        {"Admin","Shared staff account"},
        "Aeacus",
        "aleverns",
        "Arbolito",
        "Atrippy",
        {"BadDecisions","Shared staff account"},
        {"blockhaak","Social Media"},
        {"bloxxerGax","Social Media Engineer"},
        {"CameraMan","Shared staff account"},
        "Canavus",
        "chiefjustus",
        "clockwork",
        "CorgiParade",
        "dapperbuffalo",
        {"docstrange","Development Team"},
        "DoriGray",
        "EchoDown",
        "EliteEinherjar",
        {"FlowerChild1725","Engineering Manager"},
        "Fractality",
        {"Games","Shared staff account"},
        "goddessnoob",
        "Gordonrox24",
        "gorroth",
        "HawkeyeBandit",
        "Holly_Daze",
        "ibanez2189",
        "IltaLumi",
        {"jackintheblox","Social Media"},
        "JacksSmirkingRevenge",
        "jahrblox",
        {"jaykorean","Software Engineer"},
        {"Kamouraska","Multi-Platform Developer"},
        "K3yChain",
        "KBUX",
        "Kilran_SE",
        {"KREObattleship","Shared staff account"},
        "kumbhkaran",
        "Langoliers",
        {"Lilly_S","Developer Relations"},
        "littlemizspider",
        "LittleParadise",
        "Luckymaxer",
        "luckymox",
        "madrak",
        "makmenace",
        "Motornerve",
        "mysticsnail",
        "MSE6",
        {"Njay","Roblox Software Engineer"},
        "OnlyTwentyCharacters",
        "Orgonzola",
        "Phil",
        {"Qa","Shared staff account"},
        "renderman",
        "RobloKen",
        "RobloSam",
        "RobloTim",
        "Roeblockmaster",
        "Rootie_Groot",
        "RowdieRoddy",
        "sadmandapanda",
        {"ScreenMe","Communications"},
        "Scripter",
        "scubasomething",
        {"Shay899","Creative Director"},
        {"Shedletsky","Creative Director"},
        "Shirsoft",
        "SlingshotJunkie",
        {"socom1880","Hat/Gear Creator"},
        "Stealth Pilot",
        {"stoecker","Moderation"},
        "Tabemono",
        "tpadmin",
        "tweedsuit",
        "VaioBot",
        "Vexedly",
        "Vibhu",
        {"WebGL3D","Web Developer"},
        {"Wookong","3D Graphics Designer"},
        "xMaximusx",
        "yumyumcheerios",
        {"Z83GLMgu", "Shared staff account"},
        {"Zacropetricopus","Social Media Engineer"},
        "ZDollars",
        {"zontanferrah","Multi-Platform Developer"},
    },
    Intern = {
        "alexnewtron",
        "BAUER102",
        "Aotrou",
        "be_nj",
        "burgundyernie",
        "cowbear16",
        "Crykee",
        "dr01d3k4",
        "GollyGreg",
        "Heimdyll",
        "kalypso3",
        "kiwon0905",
        "NoahWillCode",
        "Osyris",
        "polarpanda16",
        "SmoothBlockModel",
        "SoraProducer",
        "stunshocker",
    },
    Former_Intern = {
        "1297827",
        "AbstractAlex",
        "Aotrou",
        "BobaMuncher",
        "Bruinwalker",
        "burgundyernie",
        "chiefsmoothie28",
        "CloneTrooper1019",
        "MadeInSeoul",
        "DarthfuzzyX",
        "Felix_Phoenix",
        "FutureWebsiteOwner",
        "Garnold",
        "Jazzyx3",
        "jtbuilder1",
        "Lunya",
        "maxxz",
        "negoose",
        "Nexx",
        "nsgriff",
        "pa00",
        "Quenty",
        "riotmonkey91",
        "robloxoldo",
        "Sharksie",
        "shellc",
        "shreyerz",
        "StarWars",
        "TheGamer101",
        "Tomarty",
        "TorchedPork",
        "triyangle",
        "Unclear",
        "woot3",
        "Xsitsu",
        "zlib",
    },
    Accelerator = {
        "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 = {
        "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",
    },
    Community_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"),
    Community_Sage = {
        "byc14",
        "PeteyK473",
        "Buildthomas",
        "Kampfkarren",
        "PeZsmistic",
    },
    Former_Moderator = {
        "Anaminus",
        "docstrange",
        "Gamer3D",
        "HolyMac",
        "Jacobxxduel",
        "Leeav",
        "Njay",
        "Rombom",
        "Sirloin",
    },
    Video_Star = require("Module:RobloxStaff/Video_Star"),
    Former_Video_Star = require("Module:RobloxStaff/Former_Video_Star"),
    QA_Tester = require("Module:RobloxStaff/QA_Tester"),
}
 
p.customLabels = { -- Same as above except handled differently by functions. p.List and p.Len will not work for custom labels. Also allows for customized images for each.
    --{"Username","Title","ImageFileName.ext"},
 
    -- UGC Creators
    {"hatsoffto2019","UGC Testing Account"},
    {"thegreatvolare2","UGC Testing Account"},
    {"takewhatyoucan","UGC Testing Account"},
    {"B3ntheHammer","UGC Testing Account"},
    {"hornsword","UGC Video Star Uploading Account"},
    {"Aotrou","UGC Creator"},
    {"Beeism","UGC Creator"},
    {"Bethink","UGC Creator"},
    {"Builder_Boy","UGC Creator"},
    {"DieSoft","UGC Creator"},
    {"Erythia","UGC Creator"},
    {"EvilArtist","UGC Creator"},
    {"Jazzyx3","UGC Creator"},
    {"Latchie","UGC Creator"},
    {"Maplestick","UGC Creator"},
    {"Myzta","UGC Creator"},
    {"Onigiri_Tsuki","UGC Creator"},
    {"rastamypasta","UGC Creator"},
    {"Reverse_Polarity","UGC Creator"},
    {"Sofloann","UGC Creator"},
    {"Sukimeki","UGC Creator"},
    {"supernob123","UGC Creator"},
    {"tarabyte","UGC Creator"},
    {"TheShipArchitect","UGC Creator"},
    {"WhoToTrus","UGC Creator"},
    {"Yourius","UGC Creator"},
}
 
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
    for i,v in pairs(p.customLabels) do
        if v[1]:lower() == name:lower() then
            table.insert(t,"Custom:"..v[2] ..(v[3] and ":"..v[3] or ""))
        end
    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* {{Player link|"..v.."}}"
        elseif type(v) == "table" then
            returnString = returnString.."\n* {{Player link|"..v[1].."}} – "..v[2]
        end
    end
    return frame:preprocess(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
Community content is available under CC-BY-SA unless otherwise noted.