This page is only available in Korean for now.
프로젝트 탭에는 만든 봇이 카드로 나열돼요. 위쪽에는 지금 켜져 있는 프로젝트 수가 보여요.
새 프로젝트
새 프로젝트 버튼을 누르면 다섯 단계로 프로젝트를 만들어요.
| 단계 | 내용 |
|---|---|
| 이름 | 영문, 한글, 숫자, -, _를 쓸 수 있어요. 대소문자만 다른 이름도 겹치는 것으로 봐요. 메인 파일은 <이름>.js가 돼요. |
| API 방식 | 스크립트에서 쓸 API를 골라요. 여러 개를 고를 수 있고, 기본은 StarLight 오리지널이에요. 아래 API 방식을 보세요. |
| 언어 | JS(NeonJS), JS(RhinoJS), 그리고 플러그인이 더한 언어 중에서 골라요. 만든 뒤에는 바꿀 수 없어요. |
| 이벤트 | 프로젝트가 받을 이벤트를 골라요. 고른 이벤트는 기본 코드에 함수 틀(API2는 리스너)로 들어가요. 고른 API 방식에 있는 이벤트만 보이고, 메시지 이벤트(onMessage, API2는 Event.MESSAGE)가 기본으로 골라져 있어요. |
| 언어 설정 | 언어에 설정이 있을 때만 나와요. 나중에 프로젝트 설정에서 바꿀 수 있어요. |
새 프로젝트는 꺼진 채, 컴파일되지 않은 상태로 만들어져요. 코드를 쓰고 컴파일한 뒤에 켜세요. 처음부터 따라 해 보려면 첫 봇 만들기를 보세요.
팁
이벤트 단계에서 고르지 않은 이벤트는 나중에 프로젝트 설정의 받을 이벤트에서 켜고 함수를 직접 쓰면 받을 수 있어요.
API 방식
참고
Google Play 판과 베타 채널의 1.0.0-261103에는 API 방식이 없어요. 모든 프로젝트가 아래 세 방식의 API를 함께 쓰고, response는 설정 → 알림, 이벤트의 레거시 이벤트 사용을 켜야 불려요.
프로젝트마다 스크립트에서 쓸 API를 골라요. 고른 방식에 든 객체와 이벤트만 스크립트에 들어가고, 여러 방식에 함께 든 객체(Log, Device, FileStream 등)는 한 번만 들어가요. 플러그인이 더한 객체와 이벤트는 방식과 상관없이 모든 프로젝트에 들어가요.
| 방식 | 객체 | 이벤트 |
|---|---|---|
| StarLight 오리지널 | Log, Projects, Plugins, Languages, Platform, Env, Java, Notification, HomeWidget, MediaSharer, EventEmitter | onMessage, onMessageDeleted, onNotificationPosted, onStartCompile |
| 메신저봇 API2 | Log, BotManager, Event, Broadcast, App, Device, FileStream | bot.addListener(…)로 등록하는 리스너 (starlight.api2.*) |
| 메신저봇 레거시 | Log, Api, Utils, DataBase, Bridge, Device, FileStream | response, onNotificationPosted, onStartCompile |
- 새 프로젝트의 마법사에서 고르고, 나중에 프로젝트 설정 → API 방식에서 바꿀 수 있어요. 바꾼 뒤에는 다시 컴파일해야 적용돼요.
- StarLight 오리지널이나 메신저봇 API2를 고르면 언어 단계에서 NeonJS가 미리 골라져요.
- Rhino에서 StarLight 오리지널과 메신저봇 API2를 함께 고르면, 최상위에 정의한
onMessage함수가 StarLight 이벤트로도 불려 한 메시지에 두 번 호출될 수 있어요. NeonJS는export한 함수만 부르므로 해당되지 않아요. - API 방식이 생기기 전에 만든 프로젝트는 세 방식을 모두 가진 채로 옮겨져요.
프로젝트 카드
카드에는 이름과 언어, 상태(실행 중 / 꺼짐 / 컴파일 필요)가 보여요. 오른쪽 스위치로 프로젝트를 켜고 꺼요. 스위치는 프로젝트가 한 번 컴파일된 뒤에 쓸 수 있어요. 끄면 새 이벤트를 받지 않지만, 스크립트가 걸어 둔 타이머처럼 이미 돌고 있는 작업은 다시 컴파일하거나 스코프를 폐기해야 멈춰요.
카드 윗부분을 누르면 펼쳐지며 버튼이 나와요.
| 버튼 | 하는 일 |
|---|---|
| 수정 | 코드 에디터를 열어요. |
| 컴파일 | 스크립트를 다시 읽어 실행할 준비를 해요. 실패하면 자세히로 오류를 볼 수 있어요. |
| 디버그 | 디버그 룸을 열어요. 컴파일된 뒤에 쓸 수 있어요. |
| 설정 | 프로젝트 설정을 열어요. |
| 정보 | 이름, 메인 스크립트, 생성일, 언어, 스레드와 작업 상태를 보여 줘요. |
| 즐겨찾기 | 프로젝트를 목록 맨 위에 고정해요. |
프로젝트 설정에서 사용자 지정 버튼을 추가했다면 그 버튼도 여기에 나와요. 버튼을 누르면 스크립트의 onProjectButtonClicked(buttonId) 함수가 불려요.
참고
켜 둔 프로젝트는 앱이 시작될 때 자동으로 컴파일돼요. 이때 컴파일에 실패한 프로젝트는 꺼져요.
정렬과 검색
- 정렬 칩을 누르면 가나다 순, 생성일 순, 컴파일 순으로 정렬할 수 있어요. 내림차순 정렬과 활성화 우선도 고를 수 있어요. 즐겨찾기한 프로젝트는 항상 맨 위에 있어요.
- 돋보기 버튼으로 이름을 검색해요.
프로젝트 설정
카드의 설정을 누르면 열려요. 값을 바꾸면 위쪽에 저장 버튼이 나타나니, 눌러서 저장하세요.
| 분류 | 항목 |
|---|---|
| 일반 | 프로젝트 위치(폴더 경로), 프로젝트 이름 변경(메인 스크립트 이름도 함께 바꿀 수 있어요), 오류 발생시 비활성화(기본 켜짐) |
| API 방식 | 스크립트에서 쓸 API예요. 위 API 방식을 보세요. |
| 이벤트 | 받을 이벤트 — 이 프로젝트가 받는 이벤트예요. 아래 받을 이벤트를 보세요. |
| 언어 | 언어별 설정이에요. NeonJS는 언어 설정을 보세요. Rhino는 JS-라이노 카테고리에 있어요. |
| 실험적 기능 | 사용자 지정 버튼 — 카드에 버튼을 추가해요. 버튼마다 ID와 아이콘을 정해요. |
| 위험 | 프로젝트 정보 다시 로드, 프로젝트 스레드 강제 종료, 프로젝트 스코프 폐기, 프로젝트 제거 |
받을 이벤트
참고
Google Play 판과 베타 채널의 1.0.0-261103에서는 이 항목이 호출이 허용된 이벤트예요. 받을 이벤트 ID를 목록에 하나씩 더해요. 기본값 starlight.*은 StarLight의 기본 이벤트를 모두 받아요.
항목에는 지금 받는 이벤트가 보이고, 누르면 이벤트 목록이 열려요.
- 이벤트는 StarLight와 플러그인별로 묶여 있어요. 체크한 이벤트만 받고, 묶음 이름 옆의 체크 상자로 모두 고르거나 풀 수 있어요. 받는 이벤트가 없는 플러그인은 접혀 있어요.
- 각 이벤트에는 스크립트가 받는 방법(
onMessage(event),bot.on(Event.MESSAGE)같은), 불리는 때, 이벤트 ID가 보여요. - 새 이벤트도 받기를 켜면 StarLight나 플러그인이 나중에 더하는 이벤트도 바로 받아요.
- 프로젝트의 API 방식에 없는 이벤트는 API 방식에 없는 이벤트에 흐리게 모여 있어요. 그 API 방식을 켜면 보이는 그대로 받아요.
- 등록된 이벤트가 없는 항목(꺼진 플러그인의 이벤트나 오타)은 알 수 없는 항목에 남아 있어요. 직접 지우기 전까지 그대로예요.
- ID 직접 편집을 누르면 항목을 한 줄에 하나씩 글로 고칠 수 있어요. 이벤트 ID,
starlight.*같은 와일드카드,!로 시작하는 제외 항목(예:!starlight.message.legacy)을 쓸 수 있고, 입력하는 동안 ID를 제안하고 줄마다 무엇을 받는지 보여 줘요.
목록에서 체크를 바꾸면 항목은 필요한 만큼만 바뀌어요. 예를 들어 starlight.*이 있을 때 한 이벤트를 끄면 ! 제외 항목이 하나 더해져요. 고른 내용은 확인을 누른 뒤 설정의 저장 버튼을 눌러야 저장되고, 저장하면 다시 컴파일하지 않아도 바로 적용돼요.
- 프로젝트 스레드 강제 종료는 실행 중인 작업을 멈추고 대기 중인 이벤트를 비워요. 항목 아래에 지금 실행 중인 작업과 대기 중인 이벤트 수가 보여요.
- 프로젝트 스코프 폐기는 컴파일된 상태를 버려요. 다시 컴파일하기 전까지 프로젝트가 동작하지 않아요.
팁
봇이 끝나지 않는 반복문에 빠져 응답하지 않으면 프로젝트를 다시 컴파일하거나 프로젝트 스코프 폐기를 쓰세요. NeonJS 프로젝트는 이때 실행 중인 코드가 중단돼요.
내보내기와 가져오기
- 카드의 정보를 누르고 파일 → 내보내기를 누르면 프로젝트를 zip 파일로 저장해요.
- 새 프로젝트 창의 zip 파일에서 가져오기로 내보낸 프로젝트를 다시 불러와요.
백업하거나, 다른 기기 또는 다른 판(Google Play 판, GitHub 판)으로 옮길 때 써요.
프로젝트 지우기
카드에는 삭제 버튼이 없어요. 설정 → 위험 → 프로젝트 제거를 누르고 확인하면 프로젝트 폴더가 통째로 지워져요. 되돌릴 수 없으니 필요한 파일은 미리 백업하세요.
프로젝트 폴더
프로젝트는 StarLight/projects/<이름>/ 폴더에 저장돼요.
StarLight/projects/hello-bot/
├─ project.json 이름, 언어, 메인 스크립트, 허용 이벤트, API 방식 등 프로젝트 정보
├─ hello-bot.js 메인 스크립트
├─ config.json 프로젝트 설정 (언어 설정 포함)
├─ logs.json 이 프로젝트의 로그
├─ data/ 스크립트가 저장하는 데이터
└─ debugroom/ 디버그 룸 대화 기록다른 기기로 옮기거나 백업할 때는 이 폴더를 통째로 복사하세요. 새 기기의 StarLight/projects/에 넣고 앱을 다시 시작하면 목록에 나타나요.