Roblox Wiki
Advertisement
Roblox Wiki

Documentation for this module may be created at Module:RobloxStaff/doc

local p = {}
local link = require('Module:Player link')
local utils = require('Module:Utils')
local player_list = require('Module:Player list')

p.data = {
    Admin = require("Module:RobloxStaff/Admin"),
    Former_Admin = {
        {"2blox2quit","Events Manager"},
        "AcesWayUpHigh",
        "adamintygum",
        {"Admin","Shared staff account"},
        "Aeacus",
        "aleverns",
        "Arbolito",
        "Atrippy",
        {"BadDecisions","Shared staff account"},
        "BeachBuster",
        {"blockhaak","Social Media"},
        {"bloxxerGax","Social Media Engineer"},
        "BrianReddus",
        {"CameraMan","Shared staff account"},
        "Canavus",
        "chiefjustus",
        "clockwork",
        "cmed",
        "coefficients",
        "CommanderCrow",
        "CorgiParade",
        "dapperbuffalo",
        "dbapostle",
        {"docstrange","Development Team"},
        "DoriGray",
        "Doughtless",
        "echoDown",
        "EliteEinherjar",
        {"FlowerChild1725","Engineering Manager"},
        "Fractality",
        "fusroblox",
        {"Games","Shared staff account"},
        "Gemlocker",
        "goddessnoob",
        "GongfuTiger",
        "Gordonrox24",
        "gorroth",
        "HawkeyeBandit",
        "Holly_Daze",
        "ibanez2189",
        "IltaLumi",
        "inventx",
        {"jackintheblox","Social Media"},
        "JacksSmirkingRevenge",
        "jahrblox",
        {"jaykorean","Software Engineer"},
        "JimiVoodoo",
        {"Kamouraska","Multi-Platform Developer"},
        "K3yChain",
        "Kilran_SE",
        {"KREObattleship","Shared staff account"},
        "kumbhkaran",
        "Langoliers",
        {"Lilly_S","Developer Relations"},
        "littlemizspider",
        "LittleParadise",
        "Luckymaxer",
        "luckymox",
        "madrak",
        "makmenace",
        {"Matt Dusek","Technical Director","Chief Architect","Web Engineering"},
        "MisterSquirrel",
        "morganic",
        "Motornerve",
        "mysticsnail",
        "MSE6",
        "NIQUEmonster",
        {"njay","Software Engineer"},
        "nrawat1",
        "OnlyTwentyCharacters",
        "Orca_Sparkles",
        "Orgonzola",
        "ostrichSized",
        "Phil",
        {"qa","Shared staff account"},
        "renderman",
        "RobLiu",
        "RobloKen",
        "RobloSam",
        "RobloTim",
        "RobloWilson",
        "RobloxSai",
        "RoboYZ",
        "Roeblockmaster",
        "Rootie_Groot",
        "RowdieRoddy",
        "sadmandapanda",
        "Saurauss",
        {"ScreenMe","Communications"},
        "Scripter",
        "scubasomething",
        {"Shay899","Creative Director"},
        {"Shedletsky","Creative Director"},
        "Shirsoft",
        "SlingshotJunkie",
        {"socom1880","Hat/Gear Creator"},
        "SparkleBarbieEP",
		"SphinxShen",
        "Stealth Pilot",
        {"stoecker","Moderation"},
        "Tabemono",
        {"tarabyte","Head of Art"},
        "totbl",
        "tpadmin",
        "tweedsuit",
        "VaioBot",
        "Vexedly",
        "Vibhu",
        {"WebGL3D","Web Developer"},
        "WonderBoy76",
        {"Wookong","3D Graphics Designer"},
        "Xerolayne",
        "xMaximusx",
        "yumyumcheerios",
        {"Z83GLMgu", "Shared staff account"},
        {"Zacropetricopus","Social Media Engineer"},
        "ZDollars",
        "ZodiacZak",
        {"zontanferrah","Multi-Platform Developer"},
    },
    Intern = {
		"0x_7777",
		"4444unahb",
		"Alpacalaca222",
		"CaptainSpaceCat7",
		"CatanLambFarmer",
		"ChairOnASquidward",
		"Chimunnies",
		"Clasifex",
		"DevUItra",
		"Garnold",
		"GiltTurtle",
		"Goaliedude529",
		"GoatRBX",
		"LoveHijabiGamer",
		"Mistemper",
		"MoEasy1998",
		"PlanarTheorem",
		"RoBryIox",
		"RobloxHighChieftain",
		"ScriptOn",
		"Slaystarss",
		"THEMASTERMIND4",
		"Technival2",
		"The_Collector99",
		"Tinmanny",
		"Valorum27",
		"Win",
		"aznjedi",
		"buzzonetwo",
		"cloakedyoshi",
		"daweezy99",
		"deevvyb",
		"desertsky3",
		"docorangey",
		"doctororanges",
		"el_henbot",
		"fauxmonalisa",
		"ghost_naps",
		"godoftheforce",
		"grant_xp",
		"hijabiIntern",
		"iSlaystar",
		"imundra",
		"internandrew",
		"jinkiesSc00b",
		"kwu00",
		"lycheeperson10",
		"marinatedsushi",
		"marteeblox91",
		"mavidt",
		"mavidt_R",
		"mlpaulsen1",
		"pkrman",
		"raspgary",
		"riddlemasta",
		"roboman2194",
		"siceet",
		"sonorousprophet",
		"stratyce",
		"tareyza",
		"thousandsofnematodes",
		"thunderstorm808080",
		"tyang0221",
		"vamorafa",
		"vocksel",
		"wiggletsunami",
		"x86_linuxkranz",
		"yogismashbear",
		"ztop2525",
    },
    Former_Intern = {
		"1297827",
		"AbstractAlex",
		"AlgyLacey",
		"Bonnicus",
		"BusyCityGuy",
		"CloneTrooper1019",
		"Crykee",
		"DarthfuzzyX",
		"Felix_Phoenix",
		"FutureWebsiteOwner",
		"LateNightDiner",
		"Lunya",
		"Newtrat",
		"Ramsey35612",
		"Sanclops",
		"Sharksie",
		"StarWars",
		"Tenal",
		"TheGamer101",
		"Tomarty",
		"TorchedPork",
		"Unclear",
		"Vydaar",
		"Xsitsu",
		"Zamphexotrorp",
		"afuuu557",
		"alexnewtron",
		"boatbomber",
		"burgundyernie",
		"byron123t",
		"chiefsmoothie28",
		"jtbuilder1",
		"kalypso3",
		"kiwon0905",
		"maxxz",
		"moded",
		"negoose",
		"ninatuck3r",
		"pa00",
		"polarpanda16",
		"riotmonkey91",
		"shellc",
		"stunshocker",
		"triplexlink",
		"triyangle",
		"ubergoodoodoo",
		"zlib",
    },
    Accelerator = {
		"HenryDev",
		"Wrathsong",
    },
    Incubator = {
    },
    Former_Accelerator = {
		"Aesthetical",
		"Airennor",
		"AirplanePunch",
		"AlreadyPro",
		"Anthem80",
		"Antiboid",
		"ArcadeRockstar",
		"Arcwise",
		"Asleum",
		"Awes_3",
		"AxisAngle",
		"AzireBlox",
		"AznDibs",
		"B_rcode",
		"BarrelxHead",
		"Baumz",
		"Ben_Est",
		"Bethink",
		"Bladefinder",
		"Brick_man",
		"BrokenBone",
		"Buddyism",
		"Builder_Boy",
		"Calilies",
		"CardStealer1",
		"Castlers",
		"CavCrow",
		"ChadTheCreator",
		"Chiefwaffles",
		"ChipioIndustries",
		"Chronomad",
		"Cindering",
		"CodeSleepRepeat",
		"Cody_Nelson",
		"ColdDeveloper",
		"ColonelGraff",
		"CorrivalRhyme",
		"Cracky4",
		"Crikyuu",
		"Dev_Anthony",
		"DiveBiologist",
		"DurIock",
		"Elocore",
		"Erythia",
		"Ev3rSoul",
		"EvilArtist",
		"Ezok",
		"Fangous",
		"ForyxeV",
		"Fusion_Swarly",
		"GFink",
		"GGGGG14",
		"GeorgeTheDev",
		"GhettoMilkMan",
		"GigsD4X",
		"GodzGalaxy",
		"GunsBullets",
		"HiIoh",
		"HorrorTM",
		"HxterNinja",
		"ICHORMOR",
		"Im50FeetTall",
		"Imaginaerum",
		"InsanelyLuke",
		"Intrance",
		"Irunui",
		"IsaacThePooper",
		"JamienChee",
		"Jazzyx3",
		"KelseyAnna",
		"Kinnis97",
		"KyleCreate",
		"Lethal682",
		"LoganCreates",
		"LordJurrd",
		"M4RC",
		"Maelstronomer",
		"MagicHighway",
		"Mark901",
		"MasterDaniel",
		"MasterOfTheElements",
		"MissRileyLane",
		"Modyfyed",
		"MonkrysGhost",
		"MrWindy",
		"Mr_Vgy",
		"Mullets_Gavin",
		"Myzta",
		"NeverTrustBob",
		"NewFissy",
		"NiceDrift",
		"Nightcaller",
		"Nimblz",
		"NoAlias",
		"NowDoTheHarlemShake",
		"Nyonic",
		"ObscureEntity",
		"Olicai",
		"OneLegitDev",
		"Ozzypig",
		"Peaspod",
		"PrimE_RBLX",
		"Quenty",
		"RBXZach",
		"Ragoozer",
		"Rauuru",
		"Repotted",
		"RickyTheFishy",
		"Roball1",
		"Roytt",
		"Ryferion1",
		"SamSwifthoof",
		"ScholarlyFox",
		"Sea_foamWolf",
		"Sethalonian",
		"Shift4D",
		"Simbuilder",
		"Simoon68",
		"SirDoomKnight",
		"Smellysuperfart",
		"SnakeWorl",
		"Soybeen",
		"Sunnytamos",
		"TCtully",
		"TGSweden",
		"Tamara_X",
		"TheAmazeman",
		"TheGh0stRunner",
		"TheKatorium",
		"TheyCallMeShmoo",
		"TigerCaptain",
		"TrainedDoorman",
		"Ultraw",
		"UndoneBuilder",
		"ValWiggin",
		"Whippledriff",
		"Widgeon",
		"XenoSynthesis",
		"Yozoh",
		"ZackLaFlame",
		"Zyleak",
		"aaron_mccoy",
		"alertcoderf",
		"amberstation",
		"bigbadbob234",
		"coolbulls",
		"cr8ee",
		"doneyes",
		"eldrela",
		"eric5283",
		"f_byte",
		"fenrirsfang",
		"hlelo_wolrd",
		"hoshpup",
		"iohgoodness",
		"jakcsonks",
		"jameS2_pond",
		"jameeish",
		"jandel",
		"jjjakey",
		"joy_pond",
		"klga",
		"litozinnamon",
		"martxn",
		"mightybaseplate",
		"mutex_lock",
		"opplo",
		"paul2448",
		"ruddev_ethan",
		"saywhoom",
		"setherroni",
		"shaylan007",
		"sircfenner",
		"slugglywuggly",
		"souup145",
		"ssienna_pond",
		"ted_pond",
		"theloudscream",
		"tyridge77",
		"unroot",
		"urGirlsFaveSenpai",
		"wish_z",
		"woodall25",
		"xJennyBeanx",
		"x_o",
		"yh8",
		"ylden_frei",
		"zKevin",
    },
    Former_Incubator = {
		"Cetharis",
		"Defaultio",
		"DevFlonk",
		"DevIrradiant",
		"Dracula2g",
		"EricThePianoGuy",
		"Frinigus",
		"HomingBeacon",
		"KrixYaz",
		"Locard",
		"Polyhex",
		"Polymorphic",
		"Shawnyg",
		"SmoothBlockModel",
		"StaySideways",
		"TechSpectrum",
		"VordonZon",
		"Wsly",
		"berezaa",
		"bizbot19",
		"blutreefrog",
		"filiptibell",
		"korky5000",
		"mazistrien",
		"michaelvanderfin",
		"mrfergie",
		"pollopollop",
		"serverOptimist",
		"sk3let0n",
		"streetrida",
    },
    Community_Champion = {
        "24RightAngles",
        "Alvin_Blox",
        "Aotrou",
        "BlockFaceSteve",
        "Blockfacebob",
        "Captain_Rando",
        "CycloneUprising",
        "Dhammapada",
        "DreamingMind",
        "Ravenshield",
        "Seranok",
        "WestToTheBay",
        "Ysko",
        "buildthomas",
        "dashadevf",
        "mothmage",
        "new_storm",
        "sircfenner",
        "sleitnick",
        "younite",
    },
    Top_Contributor = require("Module:RobloxStaff/Former_Top_Contributor"),
    Community_Sage = {
        "Kampfkarren",
        "PeZsmistic",
        "buildthomas",
        "byc14",
        "mothmage",
    },
    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"),
    UGC_Creator = require("Module:RobloxStaff/UGC_Creator"),
    Event_Organizer = require("Module:RobloxStaff/Event_Organizer")
}

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","UGC Test.png"},
    {"thegreatvolare2","UGC Testing Account","UGC Test.png"},
    {"takewhatyoucan","UGC Testing Account","UGC Test.png"},
    {"B3ntheHammer","UGC Testing Account","UGC Test.png"},
    {"hornsword","UGC Video Star Uploading Account","UGC Star.png"}
}

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.List(frame)
  if not p.data[frame.args[1]] then return "Unknown" end
  local playerTable = {}
  for i, v in pairs(p.data[frame.args[1]]) do
    table.insert(playerTable, type(v) == 'string' and v or v[1])
  end
  return player_list._player_list(playerTable, true)
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
Advertisement