const isAdmin: CommandGuard = (ctx) => { if (ctx.executor.UserId !== 1) { ctx.error("Insufficient permission!"); return false; } return true;}; @Register()class KickCommand { @Command({ name: "kick", description: "Kick a player", arguments: [ { name: "player", description: "Player to kick", type: CenturionType.Player } ] }) @Guard(isAdmin) kick(ctx: CommandContext, player: Player) { player.Kick("You have been kicked from the server."); ctx.reply(`Successfully kicked ${player.Name}`); }}
const isAdmin: CommandGuard = (ctx) => { if (ctx.executor.UserId !== 1) { ctx.error("Insufficient permission!"); return false; } return true;}; @Register({ { name: "info", description: "View info about a user or the server", }, { name: "user", description: "View info about a user", parent: ["info"], }, { name: "server", description: "View info about the server", parent: ["info"], },})// Assigning a group to the class will// make all commands in the class belong to that group@Group("info")// Similar to the above, this assigns the// provided guard(s) to all commands in the class@Guard(isAdmin)class InfoCommand { // This command will be executable through // "info user view" once registered! @Command({ name: "view", arguments: [ { name: "player", description: "Player to display information about", type: CenturionType.Player, }, ], }) @Group("user") userView(ctx: CommandContext, player: Player) { ctx.reply(`<Random data about ${player.Name}...>`); } // This command can have the same name as the above command, because it // is grouped under "server" instead. // This command will be executable through // "info server view" once registered! @Command({ name: "view", }) @Group("server") serverView(ctx: CommandContext) { ctx.error("Not implemented!"); }}