melbot / src /cli /program /message /register.discord-admin.ts
amos-fernandes's picture
Upload 4501 files
3a65265 verified
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);
});
}