Nothing reaches an unauthorised client
No modules, no remote, no interface. A player who is allowed nothing has no way to tell the package is installed.
How delivery works
A command console and permission system for Roblox, in pure Luau. One require, one call, and nothing reaches a player who is not allowed it.
The built-in console. Press F2 in game β or click above to drive this one.
local Operator = require(game:GetService("ServerStorage").Operator)
local Command, Types = Operator.Command, Operator.Types
export type KickArgs = { target: Player, reason: string }
return (Command.new("kick") :: Operator.Builder<KickArgs>)
:description("Kick a player")
:arg(Types.Player, "target", "Player to kick")
:arg(Types.String, "reason", "Reason shown to the player", { rest = true })
:permission("moderator")
:destructive()
:run(function(context, args)
args.target:Kick(args.reason)
context:reply(`kicked {args.target.Name}`)
end)Inside run, args.target is a Player and args.reason is a string, fully checked.
local Operator = require(game:GetService("ServerStorage").Operator)
Operator.Start({
Commands = script.Parent.Commands,
DefaultCommands = { "debug", "moderation" },
Roles = {
owner = { UserIds = { 1234567 }, Inherits = { "moderator" } },
moderator = { GroupId = 123456, MinRank = 200 },
},
})That is the whole setup. Operator.Start({}) also works, and gives you a console for the place owner and nobody else.
| If you want to⦠| Read |
|---|---|
| install it into a place | Installation |
| know what the console accepts as you type | Command Syntax |
| write your first command | Commands |
| decide who can run what | Permissions |
| look up an exact signature | API reference |
| build your own interface on top | Custom Interfaces |
Client/UI/Packages/.