commands/ward.ts
2.0 KB · sha256:267eeeb2be54185fa74072075080954249e7a28378bd5eecef0d5ad2f382c15a
import { raw, ok, err, requirePerm } from "../lib/format";
import { primeCaches } from "../lib/cache";
import { refreshAll } from "../lib/attachments";
export const PERM = {
reload: "ward.reload",
userInfo: "ward.user.info",
userEdit: "ward.user.edit",
groupInfo: "ward.group.info",
groupEdit: "ward.group.edit",
trackInfo: "ward.track.info",
trackEdit: "ward.track.edit",
admin: "ward.admin",
web: "ward.web",
} as const;
@Command("ward", {
description: "Ward permissions management",
aliases: ["perms", "permissions"],
})
export class Ward {
@Run
run(ctx: CommandCtx) {
const lines = [
"<dark_gray>━━━━━━━━━━━━━━━━━━━━━━━━",
"<gradient:#9b87f5:#5b3df5>Ward</gradient> <dark_gray>permissions management",
"<gray>/ward user <name> info|permission|group|prefix|suffix|meta|promote|demote|clear",
"<gray>/ward group <name> info|permission|parent|prefix|suffix|weight|meta|clear",
"<gray>/ward group list|create|delete|setdefault",
"<gray>/ward track <name> info|append|insert|remove|clear",
"<gray>/ward track list|create|delete",
"<gray>/ward admin <dark_gray>-- open the GUI",
"<gray>/ward reload",
"<dark_gray>—— player commands ——",
"<gray>/ranks [track] <dark_gray>-- open your rank menu",
"<gray>/rankup [track] <dark_gray>-- promote one step (alias: /promote)",
"<gray>/nextrank [track] <dark_gray>-- preview what's needed (alias: /next)",
"<dark_gray>━━━━━━━━━━━━━━━━━━━━━━━━",
];
for (const l of lines) raw(ctx.sender, l);
}
}
@Command("ward reload", {
description: "Reload permissions for every online player",
})
export class WardReload {
@Run
async run(ctx: CommandCtx) {
if (!requirePerm(ctx, PERM.reload)) return;
const t0 = Date.now();
await primeCaches();
await refreshAll();
ok(ctx.sender, `reloaded in <white>${Date.now() - t0}ms`);
}
}