import type { Command } from "commander"; import type { MessageCliHelpers } from "./helpers.js"; function resolveThreadCreateAction(opts: { channel?: unknown }) { const channel = typeof opts.channel === "string" ? opts.channel.trim().toLowerCase() : ""; return channel === "telegram" ? "topic-create" : "thread-create"; } 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("-m, --message ", "Initial thread message text") .option("--auto-archive-min ", "Thread auto-archive minutes") .action(async (opts) => { await helpers.runMessageAction(resolveThreadCreateAction(opts), 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); }); } export const __test__ = { resolveThreadCreateAction };