159 lines
4.8 KiB
TypeScript
159 lines
4.8 KiB
TypeScript
import type { Command } from "commander";
|
|
import type { MessageCliHelpers } from "./helpers.js";
|
|
|
|
export function registerMessageDiscordAdminCommands(message: Command, helpers: MessageCliHelpers) {
|
|
const role = message.command("role").description("Role actions");
|
|
helpers
|
|
.withMessageBase(
|
|
role.command("info").description("List roles").requiredOption("--guild-id <id>", "Guild id"),
|
|
)
|
|
.action(async (opts) => {
|
|
await helpers.runMessageAction("role-info", opts);
|
|
});
|
|
|
|
helpers
|
|
.withMessageBase(
|
|
role
|
|
.command("add")
|
|
.description("Add role to a member")
|
|
.requiredOption("--guild-id <id>", "Guild id")
|
|
.requiredOption("--user-id <id>", "User id")
|
|
.requiredOption("--role-id <id>", "Role id"),
|
|
)
|
|
.action(async (opts) => {
|
|
await helpers.runMessageAction("role-add", opts);
|
|
});
|
|
|
|
helpers
|
|
.withMessageBase(
|
|
role
|
|
.command("remove")
|
|
.description("Remove role from a member")
|
|
.requiredOption("--guild-id <id>", "Guild id")
|
|
.requiredOption("--user-id <id>", "User id")
|
|
.requiredOption("--role-id <id>", "Role id"),
|
|
)
|
|
.action(async (opts) => {
|
|
await helpers.runMessageAction("role-remove", opts);
|
|
});
|
|
|
|
const channel = message.command("channel").description("Channel actions");
|
|
helpers
|
|
.withMessageBase(
|
|
helpers.withRequiredMessageTarget(
|
|
channel.command("info").description("Fetch channel info"),
|
|
),
|
|
)
|
|
.action(async (opts) => {
|
|
await helpers.runMessageAction("channel-info", opts);
|
|
});
|
|
|
|
helpers
|
|
.withMessageBase(
|
|
channel
|
|
.command("list")
|
|
.description("List channels")
|
|
.requiredOption("--guild-id <id>", "Guild id"),
|
|
)
|
|
.action(async (opts) => {
|
|
await helpers.runMessageAction("channel-list", opts);
|
|
});
|
|
|
|
const member = message.command("member").description("Member actions");
|
|
helpers
|
|
.withMessageBase(
|
|
member
|
|
.command("info")
|
|
.description("Fetch member info")
|
|
.requiredOption("--user-id <id>", "User id"),
|
|
)
|
|
.option("--guild-id <id>", "Guild id (Discord)")
|
|
.action(async (opts) => {
|
|
await helpers.runMessageAction("member-info", opts);
|
|
});
|
|
|
|
const voice = message.command("voice").description("Voice actions");
|
|
helpers
|
|
.withMessageBase(
|
|
voice
|
|
.command("status")
|
|
.description("Fetch voice status")
|
|
.requiredOption("--guild-id <id>", "Guild id")
|
|
.requiredOption("--user-id <id>", "User id"),
|
|
)
|
|
.action(async (opts) => {
|
|
await helpers.runMessageAction("voice-status", opts);
|
|
});
|
|
|
|
const event = message.command("event").description("Event actions");
|
|
helpers
|
|
.withMessageBase(
|
|
event
|
|
.command("list")
|
|
.description("List scheduled events")
|
|
.requiredOption("--guild-id <id>", "Guild id"),
|
|
)
|
|
.action(async (opts) => {
|
|
await helpers.runMessageAction("event-list", opts);
|
|
});
|
|
|
|
helpers
|
|
.withMessageBase(
|
|
event
|
|
.command("create")
|
|
.description("Create a scheduled event")
|
|
.requiredOption("--guild-id <id>", "Guild id")
|
|
.requiredOption("--event-name <name>", "Event name")
|
|
.requiredOption("--start-time <iso>", "Event start time"),
|
|
)
|
|
.option("--end-time <iso>", "Event end time")
|
|
.option("--desc <text>", "Event description")
|
|
.option("--channel-id <id>", "Channel id")
|
|
.option("--location <text>", "Event location")
|
|
.option("--event-type <stage|external|voice>", "Event type")
|
|
.action(async (opts) => {
|
|
await helpers.runMessageAction("event-create", opts);
|
|
});
|
|
|
|
helpers
|
|
.withMessageBase(
|
|
message
|
|
.command("timeout")
|
|
.description("Timeout a member")
|
|
.requiredOption("--guild-id <id>", "Guild id")
|
|
.requiredOption("--user-id <id>", "User id"),
|
|
)
|
|
.option("--duration-min <n>", "Timeout duration minutes")
|
|
.option("--until <iso>", "Timeout until")
|
|
.option("--reason <text>", "Moderation reason")
|
|
.action(async (opts) => {
|
|
await helpers.runMessageAction("timeout", opts);
|
|
});
|
|
|
|
helpers
|
|
.withMessageBase(
|
|
message
|
|
.command("kick")
|
|
.description("Kick a member")
|
|
.requiredOption("--guild-id <id>", "Guild id")
|
|
.requiredOption("--user-id <id>", "User id"),
|
|
)
|
|
.option("--reason <text>", "Moderation reason")
|
|
.action(async (opts) => {
|
|
await helpers.runMessageAction("kick", opts);
|
|
});
|
|
|
|
helpers
|
|
.withMessageBase(
|
|
message
|
|
.command("ban")
|
|
.description("Ban a member")
|
|
.requiredOption("--guild-id <id>", "Guild id")
|
|
.requiredOption("--user-id <id>", "User id"),
|
|
)
|
|
.option("--reason <text>", "Moderation reason")
|
|
.option("--delete-days <n>", "Ban delete message days")
|
|
.action(async (opts) => {
|
|
await helpers.runMessageAction("ban", opts);
|
|
});
|
|
}
|