@snapbot 공식 라이브러리 API 레퍼런스
SnapBot의 핵심 모듈은 모두 TypeScript Strict Mode로 작성되어 있으며 독립적인 npm 패키지나 모노레포 라이브러리로 활용할 수 있습니다.
@snapbot/core
WorkspaceManager
블록의 추가, 삭제, 이동, 자석 연결(Connect), 연결 해제(Disconnect) 및 Undo/Redo 이력을 총괄하는 상태 관리자 클래스입니다.
// 주요 메서드 시그니처
const manager = new WorkspaceManager(initialData?: WorkspaceData);
manager.addBlock(opcode: string, x: number, y: number): BlockInstance | null;
manager.moveBlock(blockId: string, dx: number, dy: number): void;
manager.connectBlock(draggingId: string, candidate: SnapCandidate): void;
manager.disconnectBlock(blockId: string): void;
manager.exportData(): WorkspaceData;
manager.undo(): boolean;
manager.redo(): boolean;
@snapbot/compiler
compileWorkspace()
조립된 Visual AST 블록 트리를 입력받아 완전한 실행 가능한 discord.js v14 TypeScript 소스코드를 생성합니다.
// 사용 예시
import { compileWorkspace } from '@/lib/snapbot/compiler/compiler';
const result = compileWorkspace(workspaceData);
console.log(result.code); // 생성된 TS 코드 문자열
console.log(result.slashCommands); // 등록된 슬래시 명령어 배열
console.log(result.blockCount); // 조립된 블록 개수
@snapbot/runtime
BotSimulator
브라우저 내에서 디스코드 클라이언트 없이도 블록 트리를 메모리 상에서 직접 해석·실행하여 가상 메시지, 임베드, 버튼 상호작용을 즉시 시뮬레이션합니다.
// 시뮬레이터 인스턴스 생성 및 메시지 전송
const simulator = new BotSimulator(workspaceData);
await simulator.sendUserMessage('/ping');
await simulator.clickButton('custom_btn_id');
const messages = simulator.getMessages();