/**
 * Registers the /자비스 slash command (guild-scoped for instant availability).
 * Run once after changing the command shape:  bun run register
 */
import { REST, Routes, SlashCommandBuilder } from "discord.js";
import { config } from "./config.ts";

export const jarvisCommand = new SlashCommandBuilder()
  .setName("자비스")
  .setDescription("자비스 음성 비서를 제어합니다")
  .addSubcommand((s) =>
    s.setName("join").setDescription("당신이 있는 음성 채널에 접속해 듣기 시작합니다"),
  )
  .addSubcommand((s) => s.setName("leave").setDescription("음성 채널에서 나갑니다"))
  .addSubcommand((s) =>
    s
      .setName("ask")
      .setDescription("텍스트로 자비스에게 질문합니다")
      .addStringOption((o) =>
        o.setName("질문").setDescription("질문 내용").setRequired(true),
      ),
  )
  .addSubcommand((s) =>
    s.setName("stream").setDescription("VNC 화면을 디스코드에 송출합니다"),
  )
  .addSubcommand((s) => s.setName("stop").setDescription("VNC 화면 송출을 중단합니다"))
  .addSubcommand((s) => s.setName("status").setDescription("브릿지/세션 상태를 봅니다"));

export async function registerCommands() {
  const rest = new REST({ version: "10" }).setToken(config.botToken);
  await rest.put(Routes.applicationGuildCommands(config.appId, config.guildId), {
    body: [jarvisCommand.toJSON()],
  });
  console.log("✓ /자비스 명령어 등록 완료 (guild:", config.guildId, ")");
}

if (import.meta.main) {
  registerCommands().catch((e) => {
    console.error("명령어 등록 실패:", e);
    process.exit(1);
  });
}
