# Discord 봇

> DM에서 캐릭터와 일대일로 대화하거나, 서버에 캐릭터를 두고 누가 대화하고 누가 낼지 정합니다.

Source: https://reverie.im/ko/docs/integrations/discord-bot
Language: ko

Reverie 봇은 Discord의 두 곳에 캐릭터를 데려옵니다. 일대일 대화를 위한 봇과의 **다이렉트 메시지(DM)**, 그리고 캐릭터가 각자의 이름과 프로필 사진으로 말하는 **서버 채널**입니다. 캐릭터와 대화하는 사람은 모두 자신의 Discord 계정에 연동된 Reverie 계정이 있어야 합니다 — 무료 계정이면 충분합니다. 모든 답장은 어느 Reverie 계정에 크레딧으로 청구됩니다.

## 계정 연동하기 \[#link-your-account]

Discord 계정 하나는 정확히 Reverie 계정 하나에 대응합니다. 다음 중 어느 방법으로든 연결됩니다.

* **연동 대시보드에서.** 앱에서 **Labs → Discord 및 Telegram 봇**으로 가서 Discord 카드의 **Discord로 연동**을 누릅니다. Discord에서 확인하면 바로 돌아옵니다.
* **Discord로 로그인하기.** Discord로 Reverie에 로그인하면 봇도 함께 연동됩니다 — 단, 전에 대시보드에서 연동을 해제했다면 직접 다시 연동할 때까지 해제된 상태로 남습니다.
* **Discord에서.** 서버나 봇과의 DM에서 `/link-account`를 실행합니다. 답장은 나만 볼 수 있고, 한 번만 쓸 수 있으며 **10분** 뒤 만료되는 **계정 연동하기** 버튼이 붙어 있습니다. 열고 로그인하면 두 계정이 연결됩니다.

## DM에서 일대일로 대화하기 \[#chat-one-on-one-in-your-dms]

봇에게 DM을 보내거나, 봇이 있는 서버에서 `/chat`을 실행하세요 — 대화는 나만 볼 수 있는 DM으로 옮겨집니다. `/chat`만 쓰면 고를 수 있는 캐릭터가 나오고, 이름을 붙이면 검색합니다.

* **한 번에 한 캐릭터.** `/chat`으로 다른 캐릭터로 바꾸고, `/chats`로 DM에서 대화했던 캐릭터를 볼 수 있습니다. 캐릭터마다 자기 대화를 따로 간직하므로, 돌아가면 지난번에 멈춘 곳에서 이어집니다.
* **모든 메시지에 답장이 옵니다.** 봇이 올리며, 답장 위에 작은 글씨로 캐릭터 이름이 붙습니다. 이미지, 음성 메시지, 기억은 채널에서처럼 작동합니다.
* **내 메시지는 내가 냅니다.** 서버의 결제 방식과 한도는 여기에 적용되지 않습니다.
* **18+ 캐릭터**는 계정의 18+ 설정을 따릅니다. 꺼져 있으면 숨겨지고 DM에서 대화할 수도 없습니다.
* `/remove-character`는 지금 대화를 끝냅니다 — 대화는 저장되어 `/chats`에서 다시 찾을 수 있습니다. `/reset-chat`은 확인을 받은 뒤 대화를 지웁니다.
* `/settings` 하위 명령 가운데 DM에 적용되는 것은 `model`, `language`, `chat-style`뿐입니다.

봇이 메시지를 보낼 수 없었다고 하면, Discord 개인정보 설정에서 서버 멤버의 DM을 허용한 뒤 다시 시도하세요. 최근 DM 대화는 연동 대시보드의 **개인 채팅**에도 표시되고, **웹에서 이어서 대화**로 브라우저에서 이어갈 수 있습니다.

## 서버에 봇 추가하기 \[#add-the-bot-to-a-server]

### 봇 초대하기 \[#invite-the-bot]

연동 대시보드의 Discord 카드에서 **봇을 서버에 추가**를 누르고 서버를 고릅니다. 요청되는 권한은 모두 체크한 채로 두세요 — 각각이 왜 필요한지는 아래 표에 있습니다. 들어오면 봇은 서버의 입장 메시지가 올라오는 곳에 짧은 시작 안내를 올립니다.

### 채널에 캐릭터 추가하기 \[#add-a-character-to-a-channel]

텍스트 채널에서 `/add-character`를 실행하고 자동 완성에서 캐릭터를 고릅니다 — 공개 캐릭터와 내 비공개 캐릭터가 대상입니다. **Manage Channels** 권한과 연동된 계정이 필요합니다. 봇은 캐릭터가 자기 이름으로 글을 올릴 수 있도록 webhook을 만든 뒤 인사를 보냅니다.

### 규칙 정하기 \[#set-the-rules]

선택 사항입니다. `/settings`는 채널의 캐릭터가 어떻게 답하고 누가 비용을 내는지 정하고, `/server`는 애초에 누가 캐릭터와 대화할 수 있는지 정합니다. 둘 다 아래에서 설명합니다.

## 초대가 요청하는 권한 \[#permissions-the-invite-requests]

| 권한                  | 왜 필요한지                                |
| ------------------- | ------------------------------------- |
| **View Channels**   | 봇이 쓰이는 채널을 읽기 위해                      |
| **Send Messages**   | 답장과 명령 결과를 올리기 위해                     |
| **Manage Messages** | 답장을 부른 메시지가 지워졌을 때 캐릭터의 답장도 치우기 위해    |
| **Embed Links**     | 명령 결과와 커뮤니티 추첨 공지가 임베드라서              |
| **Manage Roles**    | Reverie 자체 서버에서 커뮤니티 추첨에 쓰는 역할을 주기 위해 |
| **Manage Webhooks** | **필수.** 캐릭터는 캐릭터마다 따로인 webhook으로 말합니다 |

**Manage Webhooks**가 없으면 `/add-character`가 실패하고 캐릭터도 추가되지 않습니다.

## 명령어 \[#commands]

서버에서 **Manage Channels**나 **Manage Server**가 표시된 명령어는 그 Discord 권한이 있는 멤버에게만 보입니다. 계정 명령어와 관리 명령어의 답장은 나만 볼 수 있습니다.

| 명령어                  | 옵션          | 쓰는 곳                        | 하는 일                                                                                                            |
| -------------------- | ----------- | --------------------------- | --------------------------------------------------------------------------------------------------------------- |
| `/help`              | —           | 서버, DM                      | 명령어 목록을 나에게만 보여 줍니다                                                                                             |
| `/link-account`      | —           | 서버, DM                      | Discord와 Reverie 계정을 잇는 일회용 링크를 올립니다                                                                            |
| `/chat`              | `name`(선택)  | 서버, DM                      | DM에서 대화할 캐릭터를 고르거나 바꿉니다. 서버에서 쓰면 선택지를 DM으로 보냅니다                                                                 |
| `/chats`             | —           | 서버, DM                      | DM에서 대화했던 캐릭터 사이를 오갑니다                                                                                          |
| `/add-character`     | `name`(필수)  | 서버 · Manage Channels        | 이 채널에 캐릭터를 추가하고 인사시킵니다                                                                                          |
| `/remove-character`  | `name`(필수)  | 서버 · Manage Channels, DM    | 캐릭터를 빼고 그 webhook을 지웁니다. DM에서는 지금 대화를 끝냅니다                                                                      |
| `/list-characters`   | —           | 서버                          | 이 채널의 캐릭터를 각각 제거 버튼과 함께 나열합니다                                                                                   |
| `/character-info`    | `name`(필수)  | 서버, DM                      | 소개, 이미지, 나이, 성별, 평점, 카테고리, 태그, NSFW 표시와 캐릭터 페이지 링크. 계정을 연동했다면, 그 캐릭터에게서 답장을 몇 번 받았고 리뷰가 열려 있을 때 1–5★ 평가 버튼도 줍니다 |
| `/reset-chat`        | —           | 서버 · Manage Channels, DM    | 채널의 메시지와 요약을 지우고 개수를 알려 줍니다. DM에서는 확인을 받은 뒤 지금 대화를 지웁니다                                                         |
| `/regenerate-reply`  | `model`(선택) | 서버, DM                      | 마지막 캐릭터 답장을 다시 뽑습니다. 그 한 번만 다른 모델을 쓸 수도 있습니다                                                                    |
| `/reply-suggestions` | —           | 서버, DM                      | 답장 제안 세 개를 버튼으로 줍니다. 누르면 내 메시지로 보내집니다                                                                           |
| `/settings`          | 하위 명령(필수)   | 서버, DM                      | 채널 설정과 개인 설정                                                                                                    |
| `/plugins`           | 하위 명령(필수)   | 서버, DM                      | 여기서 돌아가는 플러그인을 보여 주고, 공식 플러그인과 내 플러그인을 설치·제거·전환합니다                                                              |
| `/server`            | —           | 서버 · Manage Server 또는 결제 담당 | 캐릭터와 대화할 수 있는 사람, 멤버별 일일 한도, 차단한 멤버, 사용량                                                                        |
| `/my-account`        | —           | 서버, DM                      | 크레딧, 요금제 사용량, 갱신일, 채팅 수                                                                                         |
| `/daily`             | —           | 서버, DM                      | 일일 체크인을 받습니다                                                                                                    |
| `/notify`            | —           | 서버, DM                      | 캐릭터가 먼저 메시지를 보내도 되는지, 어떤 알림을 DM으로도 받을지                                                                          |

`/plugins`는 `list`, `install`, `remove`, `enable`, `disable` 중 하나를 받습니다. 공식 플러그인과 내 플러그인만, 그중에서도 프롬프트 플러그인과 도구 플러그인만 제공됩니다. 설정을 채워야 하는 플러그인은 봇에서 설치할 수 없습니다. 도구 플러그인의 결과는 캐릭터 이름으로 짧은 카드가 되어 올라갑니다. 채널에서 플러그인을 바꾸려면 **Manage Channels**가 있거나 그 채널에 캐릭터를 추가한 사람이어야 하고, 목록은 누구나 볼 수 있습니다. DM에서는 플러그인을 내 마음대로 바꿀 수 있습니다.

`/settings`만 쓰면 유효한 명령이 아닙니다 — 항상 여섯 하위 명령 중 하나를 붙입니다.

| 하위 명령                    | 옵션                          | 필요 권한           | 효과                                                                         |
| ------------------------ | --------------------------- | --------------- | -------------------------------------------------------------------------- |
| `/settings model`        | `model`(선택)                 | —               | 이 채널 주인공 캐릭터에 쓰는 **당신의** 모델. 비우면 현재 값을 보여주거나 초기화합니다. 고급 모델은 구독이 필요할 수 있습니다 |
| `/settings language`     | `language`(선택)              | Manage Channels | 채널의 응답 언어. 비우면 영어로 돌아갑니다                                                   |
| `/settings channel-mode` | `mode`: `auto` 또는 `mention` | Manage Channels | 캐릭터가 모든 메시지에 답할지, 불릴 때만 답할지                                                |
| `/settings chat-style`   | `style`: `RP` 또는 `NORMAL`   | Manage Channels | 행동 묘사가 있는 롤플레이 문장인지, 대사만인지                                                 |
| `/settings payment-mode` | `mode`: `owner` 또는 `user`   | Manage Channels | 누구에게 청구할지                                                                  |
| `/settings daily-limit`  | `credits`(필수, 0 이상)         | Manage Channels | UTC 하루당 크레딧 상한. `0`은 무제한                                                   |

같은 설정이 웹 대시보드에도 채널별로 있으며, 이름은 **Payment mode**, **Daily credit limit**, **Chat style**, **Reply mode**, **Response language**, **Your model**입니다. 언어와 모델은 그 채널에 누군가 메시지를 보내기 전까지 비활성 상태로 남습니다.

## 캐릭터가 답할 때 \[#when-a-character-replies]

캐릭터는 **@멘션**되었을 때, 누군가 그 메시지에 **답장**했을 때, 또는 채널이 자동 답장 상태일 때 답합니다. 자동 답장은 **기본적으로 꺼져 있어서**, 막 추가한 캐릭터는 불리기 전까지 조용합니다.

한 채널에 캐릭터가 여럿이면 그 채널은 하나의 그룹 채팅처럼 움직입니다. 한 번의 프롬프트에 그 자리의 캐릭터가 모두 들어가고, 누가 말할지는 모델이 정합니다. 이름을 부르는 것은 메시지와 함께 전달되는 힌트일 뿐, 그 캐릭터에게 답하게 만드는 스위치가 아닙니다. [그룹 채팅 →](https://reverie.im/ko/docs/chatting/group-chats)

## 스레드 \[#threads]

텍스트 채널의 스레드는 그 채널의 캐릭터와 대화하고 결제 방식, 답장 방식, 채팅 스타일도 채널을 따르지만, 기록은 따로 가집니다 — 채널을 어지럽히지 않고 곁가지 장면을 펼칠 공간입니다. 처음에는 채널의 응답 언어로 시작하고, 스레드 안에서 쓴 `/settings language`와 `/settings model`은 그 스레드에만 적용됩니다. 스레드에서 쓴 비용은 채널의 일일 한도에 포함됩니다. 캐릭터 구성이나 채널의 다른 설정을 바꾸는 명령어 — `/add-character`, `/list-characters`, `/plugins`, `/settings chat-style` 등 — 는 상위 채널에서 하라고 안내합니다. 포럼 게시물과 다른 종류의 스레드에는 캐릭터가 없습니다.

## 누가 내는가 \[#who-pays]

| 결제 방식              | 청구 대상                                                   | 적용되는 한도                                 |
| ------------------ | ------------------------------------------------------- | --------------------------------------- |
| **Owner pays**(기본) | 서버의 결제 담당: 그 서버에 처음 캐릭터를 넣은 Reverie 계정. 다른 사람이 넘겨받기 전까지 | 채널의 하루 크레딧 상한과, `/server`로 정한 멤버별 일일 한도 |
| **User pays**      | 보낸 사람 각자의 잔액                                            | 없음 — 멤버마다 자기 잔액만큼만 씁니다                  |

메시지 비용은 웹 앱과 같습니다. 토큰당 비용에 모델의 크레딧 배수를 곱합니다. 하루 카운터는 **00:00 UTC**에 초기화되고, 대시보드의 채널 설정 대화 상자가 오늘 사용량을 상한과 함께 보여 줍니다.

청구를 내 계정으로 옮기려면 — 예를 들어 봇을 설치한 사람이 떠났다면 — `/server`를 열고 **내 계정으로 결제**를 누르세요. 결제 담당이 내는 서버의 모든 채널에 적용됩니다.

## 서버 규칙 \[#server-rules]

`/server`는 나만 볼 수 있는 패널을 엽니다. **Manage Server**가 있는 멤버, 그리고 서버 캐릭터의 비용을 내는 사람이 열 수 있습니다. 오늘과 지난 7일의 사용량, 오늘 가장 많이 쓴 멤버, 그리고 세 가지 규칙이 나옵니다.

| 규칙            | 선택지                                                                    |
| ------------- | ---------------------------------------------------------------------- |
| **대화 가능**     | **모두**(기본), **관리자만**, 또는 **특정 역할이 있는 멤버** — 역할은 두 번째 메뉴에서 고릅니다         |
| **멤버별 일일 한도** | 멤버 한 명이 UTC 하루에 쓸 수 있는 결제 담당의 크레딧, 또는 **제한 없음**(기본). 결제 담당이 낼 때만 적용됩니다 |
| **차단한 멤버**    | 여기서 고른 멤버는 서버 어디에서도 캐릭터와 대화할 수 없습니다                                    |

여기서 관리자는 **Manage Server**가 있는 멤버입니다. 관리자와 결제 담당 계정은 차단으로도 접근 방식으로도 막히지 않으며, 역할을 하나도 고르기 전에는 **특정 역할이 있는 멤버**여도 이들만 대화할 수 있습니다. 접근 방식에서 빠진 멤버에게는 일부 멤버만 캐릭터와 대화할 수 있다고 한 번 알려 줍니다. 차단된 멤버에게는 아예 답장이 가지 않습니다.

## 연령 제한 캐릭터 \[#age-restricted-characters]

18+ 캐릭터는 연령 제한 채널, 연령 제한 카테고리 안의 채널, 또는 서버 전체가 18+로 설정된 곳에서만 답합니다 — 스레드는 속한 채널을 따릅니다. 그 밖의 곳에서는 봇이 답하는 대신 이유를 알려 줍니다. DM에서는 18+ 캐릭터가 대신 계정의 18+ 설정을 따릅니다.

## 채널에서 되는 것 \[#what-works-in-a-channel]

* **이미지.** 캐릭터가 Discord에서 이미지를 만들 수 있습니다.
* **음성 출력.** 캐릭터가 음성 메시지를 보낼 수 있습니다.
* **음성 입력.** 당신이 보낸 음성 메시지는 글로 옮겨집니다. **25 MB**까지.
* **기억.** 모델이 도구를 지원하면 캐릭터가 기억을 저장·수정·삭제하고, 월드북의 설정도 맥락에 들어갑니다.
* **기록.** 길어진 채널은 자라는 대로 자동 요약됩니다.
* 채널에 두 번째 캐릭터를 넣으면 그 채널의 대화 방식, 결제 방식, 하루 상한을 그대로 가져옵니다.

## 알림과 체크인 \[#notifications-and-check-ins]

`/notify`로 두 가지를 정합니다. **캐릭터가 먼저 보내는 메시지**는 계정의 먼저 연락하는 정도로, 웹사이트와 같은 설정입니다. 구독이 있으면 DM에서 지금 대화하는 캐릭터가 먼저 메시지를 보낼 수 있습니다 — [먼저 오는 메시지](https://reverie.im/ko/docs/chatting/proactive-messages)를 보세요. **여기로도 받기**는 Reverie 알림 가운데 어떤 것을 DM으로도 받을지 고릅니다. 처음에는 **계정 및 결제**만 켜져 있습니다 — [알림](https://reverie.im/ko/docs/account/notifications)을 보세요. 연동 대시보드에서도 같은 것을 고를 수 있습니다.

`/daily`는 웹사이트와 같은 [일일 체크인](https://reverie.im/ko/docs/rewards/daily-check-in)을 받고, 행운 추첨 링크를 함께 줍니다.

## 메시지 수정과 삭제 \[#editing-and-deleting-messages]

자기 최근 메시지를 고치면 그에 대한 답장이 다시 만들어집니다.

> Discord에서 메시지를 지우면 그 메시지**와 그 뒤의 모든 메시지**가 캐릭터의 기록에서 사라지고, 그 시점 뒤에 생긴 기억과 첨부도 함께 사라집니다. 캐릭터의 답장도 채널에서 치워집니다. 되돌릴 수 없습니다.

## 봇이 읽는 것 \[#what-the-bot-reads]

봇은 볼 수 있는 채널의 모든 메시지를 받습니다 — 멘션과 답장이 봇에게 닿는 것도 그래서입니다. 답할 때마다 그 채널의 **지난 한 시간 동안의 최근 메시지**도 읽는데, 자기에게 한 말이 아닌 것까지 포함해 모델에 맥락으로 넘겨 캐릭터가 분위기를 따라가게 합니다.

봇이 있는 채널은 봇이 듣고 있는 채널이라고 여기세요. 그게 원하는 바가 아니라면 캐릭터를 따로 만든 채널에 두세요.

## 한도 \[#limits]

| 한도                    | 값                  |
| --------------------- | ------------------ |
| 채널당 캐릭터 수             | 5                  |
| Discord 메시지 길이        | 2,000자             |
| 음성 메시지 크기             | 25 MB              |
| Discord 채널당 webhook 수 | 15 (Discord 자체 상한) |
| 채널당 대기 중인 메시지 수       | 3                  |

같은 사람이 빠르게 잇달아 보낸 메시지는 한 턴으로 합쳐집니다.

## 연동 해제 \[#unlinking]

연동 대시보드에서 **계정 연동 해제**로 해제합니다. 서버에서 봇을 빼거나 서버를 나가도 계정 연동은 풀리지 않습니다. 해제한 뒤에는 Discord로 로그인해도 봇이 저절로 다시 연동되지 않습니다 — 다시 쓰고 싶으면 **Discord로 연동**이나 `/link-account`를 쓰세요.

## 관련 문서 \[#related]

* [Telegram 봇](https://reverie.im/ko/docs/integrations/telegram-bot) — 같은 캐릭터를 Telegram에서
* [Reverie Labs](https://reverie.im/ko/docs/integrations/labs) — 연동 대시보드가 있는 곳
* [그룹 채팅](https://reverie.im/ko/docs/chatting/group-chats) — 여러 캐릭터 대화가 움직이는 방식
* [크레딧](https://reverie.im/ko/docs/billing/credits) — 메시지 하나의 비용
