Command Palette

Search for a command to run...

첫 프레즌스 만들기

CLI로 새 Nowly 프레즌스를 만들고 첫 Discord Rich Presence 활동을 전송하세요.

CLI로 시작하기

Nowly CLI로 새 프레즌스의 스캐폴딩을 생성합니다.

nowly init "Example"

CLI는 메타데이터, 프레즌스 스크립트, 필요한 에셋을 생성합니다.

기본 프레즌스 코드

PresenceAssets는 런타임에서 제공됩니다 - Presence APIAssets를 참고하세요. document는 표준 브라우저 DOM API로, 프레즌스가 확장 프로그램의 콘텐츠 스크립트로 실행되기 때문에 사용할 수 있습니다.

@nowly/sdk에서 가져와야 하는 것은 PresenceType(그리고 createMediaTimestamps 같은 다른 헬퍼)뿐입니다.

import { PresenceType } from "@nowly/sdk"

const presence = new Presence()

presence.on("UpdateData", async () => {
  await presence.setActivity({
    details: document.title,
    state: document.location.hostname,
    largeImageKey: Assets.Logo,
    type: PresenceType.Watching,
  })
})

런타임 흐름

사용자가 일치하는 URL을 방문하면 Nowly가 프레즌스를 로드합니다. 프레즌스는 페이지 상태를 읽고 setActivity를 호출합니다. 확장 프로그램은 그 페이로드를 Nowly Host로 전달하고, Nowly Host가 Discord를 업데이트합니다.

개발 루프

1

스캐폴딩

프레즌스 폴더, 메타데이터, 필요한 에셋을 생성합니다.

nowly init "Example"
2

구성

이름, 작성자, 지원 URL, 카테고리, 색상, 다국어 설명, 그리고 Discord가 이미 해당 플랫폼을 지원하는 경우 discordNative를 설정합니다.

metadata.json을 편집하세요 - 사용 가능한 모든 필드는 Metadata를 참고하세요.

3

구현

Presence SDK를 사용해 프레즌스 로직을 작성합니다.

import { PresenceType } from "@nowly/sdk"

const presence = new Presence()

presence.on("UpdateData", async () => {
  await presence.setActivity({
    details: document.title,
    largeImageKey: Assets.Logo,
    type: PresenceType.Watching,
  })
})
4

검증

메타데이터 구조가 올바르고 에셋이 준비되어 있는지 확인합니다.

nowly validate
5

빌드

프레즌스를 독립된 번들로 컴파일합니다.

nowly build example
6

로드

빌드한 프레즌스를 브라우저에 설치합니다. 두 가지 방법: 미리 빌드된 확장 프로그램 또는 zip 드롭.

전체 비교는 로컬에서 로드 및 테스트를 참고하세요.

처음인 경우(브라우저에 Nowly가 없음): 프레즌스를 완성된 확장 프로그램에 포함시킵니다.

nowly extension example

chrome://extensions에서 dist/extension-dev를 압축 해제된 확장 프로그램으로 로드하세요.

이미 Nowly가 압축 해제된 상태로 로드되어 있는 경우: zip으로 패키징하고 설정 → 고급 → 디버그에 드롭하세요. 스토어 설치는 서명되지 않은 zip을 거부합니다.

nowly pack example
7

테스트

대상 웹사이트를 열면 프레즌스가 자동으로 활성화됩니다.

사이트를 방문하세요

코드를 변경할 때마다 구현빌드로드를 반복하세요.