import type { Command } from "commander"; import type { MessageCliHelpers } from "./helpers.js"; export function registerMessageThreadCommands(message: Command, helpers: MessageCliHelpers) { const thread = message.command("thread").description("Thread actions"); helpers .withMessageBase( helpers.withRequiredMessageTarget( thread .command("create") .description("Create a thread") .requiredOption("--thread-name ", "Thread name"), ), ) .option("--message-id ", "Message id (optional)") .option("--auto-archive-min ", "Thread auto-archive minutes") .action(async (opts) => { await helpers.runMessageAction("thread-create", opts); }); helpers .withMessageBase( thread .command("list") .description("List threads") .requiredOption("--guild-id ", "Guild id"), ) .option("--channel-id ", "Channel id") .option("--include-archived", "Include archived threads", false) .option("--before ", "Read/search before id") .option("--limit ", "Result limit") .action(async (opts) => { await helpers.runMessageAction("thread-list", opts); }); helpers .withMessageBase( helpers.withRequiredMessageTarget( thread .command("reply") .description("Reply in a thread") .requiredOption("-m, --message ", "Message body"), ), ) .option( "--media ", "Attach media (image/audio/video/document). Accepts local paths or URLs.", ) .option("--reply-to ", "Reply-to message id") .action(async (opts) => { await helpers.runMessageAction("thread-reply", opts); }); }