Module:RobloxStaff

From nUSA Wiki Archive
Revision as of 02:57, 12 November 2022 by Pauljkl>Thundermaker300 (Changed protection settings for "Module:RobloxStaff": Lowering protection per editor discussion ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only administrators] (indefinite)))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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 = require("Module:RobloxStaff/Former_Admin"),
    Intern = {
        -- From intern group
        "0x_7777",
        "4444unahb",
        "Aitorisu",
        "Alpacalaca222",
        "CaptainSpaceCat7",
        "CatanLambFarmer",
        "ChairOnASquidward",
        "Chimunnies",
        "Clasifex",
        "DevUItra",
        "DevoidOfDebt",
        "Garnold",
        "GiltTurtle",
        "Goaliedude529",
        "GoatRBX",
        "LilKage141",
        "LoveHijabiGamer",
        "Mistemper",
        "MoEasy1998",
        "Parranoul",
        "PlanarTheorem",
        "PrimalImpulse",
        "RoBryIox",
        "RobloxHighChieftain",
        "ScriptOn",
        "Slaystarss",
        "THEMASTERMIND4",
        "Technival2",
        "TheRadOpal",
        "The_Collector99",
        "Valorum27",
        "Win",
        "YasiToThePeace",
        "aznjedi",
        "buzzonetwo",
        "crunchwrap_supr3me",
        "crystallineblade",
        "daweezy99",
        "deevvyb",
        "desertsky3",
        "docorangey",
        "doctororanges",
        "dougtoter",
        "el_henbot",
        "fauxmonalisa",
        "godoftheforce",
        "grant_xp",
        "hijabiIntern",
        "hydr0h0mie",
        "iSlaystar",
        "imundra",
        "internandrew",
        "jinkiesSc00b",
        "kvrisutina",
        "kwu00",
        "lycheeperson10",
        "marteeblox91",
        "mavidt",
        "mavidt_R",
        "misterchipotle",
        "misterpebblez",
        "mlpaulsen1",
        "pkrman",
        "raspgary",
        "riddlemasta",
        "roboman2194",
        "siceet",
        "sk9lar",
        "sno_bakes",
        "sonorousprophet",
        "stratyce",
        "tareyza",
        "thousandsofnematodes",
        "thunderstorm808080",
        "vamorafa",
        "wiggletsunami",
        "worklessplaymore",
        "wrentea",
        "x86_linuxkranz",
        "xiaw4n",
        "yogismashbear",
        "ztop2525",
        
        -- From official group of Roblox
        "99percent_human",
        "AMDLiquidify",
        "AdrInt09",
        "ArugulaBeluga",
        "AvatarAmberNS1",
        "AvatarAmberNS2",
        "AvatarAmberNS3",
        "BeNiceToday",
        "Big_TonkaT",
        "CrashInvestigatorAv",
        "FinishingTheHat",
        "IntegrationClientRCC",
        "JerryGarc1a",
        "ParachutesAreFun",
        "Parranoul",
        "Pumpkin_mba",
        "SalvoSword",
        "Shneeeps",
        "Sookeden",
        "Sunbeam_Sunflower",
        "TheLorekt",
        "WhiffleCat",
        "Yeeetdab7",
        "aceSenzation",
        "adequate_username",
        "ambgiovanni",
        "boT0Tod",
        "chickendashe",
        "discodorothy",
        "dzieg2000",
        "fierceandtender",
        "gener4lity",
        "hasijack",
        "its_jdot",
        "ktsai14",
        "namnams1756",
        "nandemoiize",
        "nightend16",
        "noodlelover9898",
        "notaidans",
        "ochiitsuki",
        "prodcont",
        "psychomantis_125",
        "rbxpotatoincs",
        "slimnotshady2021",
        "starhikerCI",
        "sunshine53737",
        "testav01",
        "thegreatvolare2",
        "themindinator",
        "thenutu98",
        "vdas96",
        "vdvprods1",
        "weeek53",
        "yaboyblue17",
        "yulipandas",
    },
    Former_Intern = {
        "1297827",
        "AbstractAlex",
        "AlgyLacey",
        "Bonnicus",
        "BusyCityGuy",
        "Crykee",
        "DarthfuzzyX",
        "Felix_Phoenix",
        "FutureWebsiteOwner",
        "LateNightDiner",
        "Lunya",
        "Ramsey35612",
        "Sanclops",
        "Sharksie",
        "StarWars",
        "Tenal",
        "TheGamer101",
        "Tomarty",
        "TorchedPork",
        "Unclear",
        "Vydaar",
        "Xsitsu",
        "Zamphex",
        "afuuu557",
        "alexnewtron",
        "allergicpuppy",
        "boatbomber",
        "burgundyernie",
        "byron123t",
        "chiefsmoothie28",
        "cloakedyoshi",
        "jtbuilder1",
        "kalypso3",
        "kiwon0905",
        "maximum_adhd",
        "maxxz",
        "moded",
        "negoose",
        "ninatuck3r",
        "pa00",
        "polarpanda16",
        "riotmonkey91",
        "stunshocker",
        "triplexlink",
        "triyangle",
        "ubergoodoodoo",
        "zlib",
    },
    Accelerator = {
        "BONNlEBUILDS",
        "BloodSpring",
        "CrimsonForce",
        "Daronion",
        "DeltaRager",
        "DeniedTriangles",
        "DrDarkMatter",
        "Girovv",
        "Grimmorath",
        "Guapled",
        "Jazzyx3",
        "Jplay5x5",
        "Lawll3r",
        "Monkepled",
        "MoraIins",
        "Musketfall",
        "Redridge",
        "Scribels",
        "Sekuriyo",
        "SixEightJakey",
        "bigbadbob234",
        "blutreefrog",
        "bryguy098",
        "len_ny",
        "lucoile",
        "nurokoi",
        "rakamoni",
        "ryfd121",
        "seario2020",
        "tomwars13",
        "wpled",
    },
    Incubator = {
        "Dspav",
        "dyno_smore",
    },
    Former_Accelerator = {
        "4slug",
        "AAA_RobloxDev",
        "AbiZinho",
        "Aesthetical",
        "Airennor",
        "AirplanePunch",
        "AlreadyPro",
        "Amber_pond",
        "Anthem80",
        "Antiboid",
        "Aragornx_swe",
        "ArcadeRockstar",
        "ArcticCitadel",
        "Arcwise",
        "AshCr4ft",
        "Asleum",
        "Atrazine",
        "Avlyssna",
        "Awes_3",
        "Axcerious",
        "AxisAngle",
        "AzireBlox",
        "AznDibs",
        "BIackoutDev",
        "B_rcode",
        "BarrelxHead",
        "Baumz",
        "BelowNatural",
        "Ben_Est",
        "Bethink",
        "Biostream",
        "Bladefinder",
        "Blueice506",
        "BreakfastBananas",
        "Brick_man",
        "BrokenBone",
        "Brv1n",
        "Buddyism",
        "Builder_Boy",
        "Calilies",
        "CardStealer1",
        "Castlers",
        "CavCrow",
        "ChadTheCreator",
        "Chaotic_Cody",
        "Chiefwaffles",
        "ChipioIndustries",
        "Chronomad",
        "Cindering",
        "CodeSleepRepeat",
        "CodingLogistics",
        "CoffeeNerdz",
        "ColdDeveloper",
        "ColonelGraff",
        "CorrivalRhyme",
        "Cosmoit",
        "CovenK",
        "Cracky4",
        "CreatyChameleon",
        "Credenzio",
        "CryptoCookie101",
        "Cypraith",
        "DanzLua",
        "Dapale",
        "DevAwesomely",
        "DevIrradiant",
        "DevSpec",
        "Dev_Anthony",
        "DurIock",
        "Eezby",
        "Elocore",
        "Erythia",
        "EverSoull",
        "EvilArtist",
        "Ezok",
        "Fabiox99",
        "Fangous",
        "FataIJaka",
        "Fishh3ad",
        "Fluffmiceter",
        "Fm_Trick",
        "ForyxeV",
        "FouledAnchors",
        "Fresh_Effect",
        "FriendlyBiscuit",
        "Fusion_Swarly",
        "GFink",
        "GGGGG14",
        "GeorgeOfAIITrades",
        "GhettoMilkMan",
        "Gibfoot",
        "GigsD4X",
        "GodzGalaxy",
        "GunsBullets",
        "Gusmanak",
        "HDFrisk",
        "HaroutYerets",
        "HenryDev",
        "HiddenBladed",
        "HorrorTM",
        "HyperBlue",
        "Im50FeetTall",
        "Imaginaerum",
        "InFamooseRebek",
        "InsanelyLuke",
        "Intrance",
        "Irunui",
        "IsaacThePooper",
        "JDFantasy",
        "JKVette",
        "James_Nuts",
        "JamienChee",
        "JohnDrinkin",
        "Kavelleri",
        "KelseyAnna",
        "Kinnis97",
        "KoachyMan",
        "KyleCreate",
        "L1611",
        "LMH_Hutch",
        "Lethal682",
        "LifeApollo",
        "LinxyDotLua",
        "LoganCreates",
        "LordJurrd",
        "LordSilverius",
        "M4RC",
        "Maelstronomer",
        "MagicHighway",
        "MahaIo",
        "MakkieMon",
        "MarioMan57169",
        "Mark901",
        "MasterDaniel",
        "MasterOfTheElements",
        "Modyfyed",
        "MonkrysGhost",
        "Mophyr",
        "MrThorRBX",
        "MrWindy",
        "Mr_Vgy",
        "Mullets_Gavin",
        "Myzta",
        "NO4HHHH",
        "Narroby",
        "Natalie_Clabo",
        "NeverTrustBob",
        "NewFissy",
        "Nexiuos",
        "NiceDrift",
        "Nightcaller",
        "Niktalin",
        "Nimblz",
        "NoAlias",
        "Noble_Draconian",
        "NowDoTheHarlemShake",
        "Nyonic",
        "ObscureEntity",
        "OliFlam",
        "OneLegitDev",
        "OttodotOfficial",
        "Ozzypig",
        "ParallelMayhem",
        "Parky43536",
        "Patricia1025",
        "Pavalineox",
        "Peaspod",
        "PezzoGuy",
        "PhilipJFryFry",
        "Plutonem",
        "PrimE_RBLX",
        "Profine",
        "ProgramadorMan",
        "Quenty",
        "Ragoozer",
        "Raildex",
        "Rauuru",
        "Razuatix",
        "Refactor",
        "Repotted",
        "RickyTheFishy",
        "Roball1",
        "Rocky28447",
        "Rolijok",
        "Roytt",
        "Ryferion1",
        "SamSwifthoof",
        "Schematics",
        "ScholarlyFox",
        "SeafoamWolfy",
        "Sethalonian",
        "Shift4D",
        "ShinyGriffin",
        "Simbuilder",
        "Simoon68",
        "SirDoomKnight",
        "Skeledonut",
        "Smellysuperfart",
        "SnakeWorl",
        "Sollestice",
        "Soybeen",
        "Sparklings",
        "Spartan_N85",
        "Spathi",
        "StarMarine614",
        "SteadyOn",
        "Sunnytamos",
        "TCtully",
        "TGSweden",
        "Tamara_X",
        "TattedZach",
        "TeamSwordphin",
        "Terabyl",
        "TheAmazeman",
        "TheGh0stRunner",
        "TheGuyWithAShortName",
        "TheKatorium",
        "Thernus",
        "TheyCallMeShmoo",
        "TigerCaptain",
        "Tohb",
        "TrainedDoorman",
        "TyberiusCorvus",
        "Ultraw",
        "UndoneBuilder",
        "ValWiggin",
        "Voile",
        "WhoseTrade",
        "Widgeon",
        "WindScourge",
        "Wishtap",
        "Wolfragon",
        "WooleyWool",
        "Wrathsong",
        "XandertjeKnal",
        "Xeldath",
        "XenoSynthesis",
        "Yozoh",
        "ZackLaFlame",
        "ZcambiKabob",
        "Zintenka",
        "ZolarKeth",
        "Zukozy",
        "Zyleak",
        "aaron_mccoy",
        "alertcoderf",
        "bethanytheanimator",
        "blazescus",
        "bloody1",
        "booghow",
        "cbmaximillian",
        "colbert2677",
        "coolbulls",
        "copuni",
        "demiannpi",
        "doneyes",
        "eric5283",
        "eutniz",
        "filiperamaz",
        "finwei",
        "goro7",
        "hahaboomman1234",
        "harule",
        "hiioh",
        "hipenguinflip",
        "hlelo_wolrd",
        "hoshpup",
        "iohgoodness",
        "ionic_code",
        "ivofrog",
        "jameS2_pond",
        "jameeish",
        "jandel",
        "jjjakey",
        "joy_pond",
        "kenami",
        "khorlybhongoly",
        "klga",
        "lineridermasterman",
        "litozinnamon",
        "loravocado",
        "madattak",
        "madebyyaya",
        "martxn",
        "maximillianayre",
        "mazistrien",
        "mightybaseplate",
        "mikelskipples",
        "misternicekai",
        "monkletpox",
        "morscore",
        "mutex_lock",
        "nicode_n",
        "opplo",
        "paul2448",
        "popstarpiranhas",
        "prisman",
        "rbzs",
        "redalex415",
        "rekoleon",
        "rolbloxguy1876",
        "ruddev_ethan",
        "rulkoll",
        "saywhoom",
        "schweepus",
        "se_yai",
        "shaylan007",
        "sidnad10",
        "sircfenner",
        "soulstyce",
        "souup145",
        "ssienna_pond",
        "steven4547466",
        "straykevin",
        "suzycreamcheeese",
        "ted_pond",
        "theasmileyriley",
        "theloudscream",
        "tkirax",
        "tyridge77",
        "unroot",
        "vasil12345",
        "vastqud",
        "wish_z",
        "woodall25",
        "worldcrasher",
        "xJennyBeanx",
        "x_o",
        "yh8",
        "ylden_frei",
        "zKevin",
    },
    Former_Incubator = {
        "Beac_n",
        "Cetharis",
        "Defaultio",
        "DevFlonk",
        "Dracula2g",
        "EricThePianoGuy",
        "Frinigus",
        "KrixYaz",
        "Locard",
        "Polyhex",
        "Polymorphic",
        "Shawnyg",
        "SmoothBlockModel",
        "SoFlyyDinero",
        "TechSpectrum",
        "VordonZon",
        "Wsly",
        "berezaa",
        "bizbot19",
        "filiptibell",
        "korky5000",
        "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"),
    Event_Organizer = require("Module:RobloxStaff/Event_Organizer")
}

p.UGC_Creator = require("Module:RobloxStaff/UGC_Creator")

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
    {"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
    
    -- Custom Labels
    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
    
    -- UGC
    local UGC_Wave = p.UGC_Creator.GetWave(name:lower())
    if UGC_Wave ~= -1 then
        table.insert(t, "Custom:Wave " .. UGC_Wave .. " UGC Creator:UGC Test.png")
    end
    
    -- UGC Testers
    for i,v in pairs(p.UGC_Creator.Waves.Testers) do
        if v:lower() == name:lower() then
            table.insert(t,"Custom:UGC Testing Account:UGC Test.png")
        end
    end
    
    -- UGC Early Access
    for i,v in pairs(p.UGC_Creator.Waves.EarlyAccess) do
        if v:lower() == name:lower() then
            table.insert(t,"Custom:Early Access UGC Creator:UGC Test.png")
        end
    end
    
    -- Ret
    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