# Discord 機器人

> 在私訊中和角色一對一聊天，或把角色放進伺服器，並決定誰能和它們聊天、由誰付費。

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

Reverie 機器人把角色帶到 Discord 的兩個地方：你和機器人的**私訊**，用來一對一聊天；以及**伺服器頻道**，每個角色都以自己的名稱和頭像發言。每個和角色聊天的人，都需要一個已連結自己 Discord 帳號的 Reverie 帳號——免費帳號就夠了——而每一則回覆都會以點數計費，記在某個 Reverie 帳號上。

## 連結你的帳號 \[#link-your-account]

一個 Discord 帳號只能對應一個 Reverie 帳號。以下任何一種方式都能將兩者連結：

* **從整合主控台。** 在應用程式中前往**實驗室 → Discord 與 Telegram 機器人**，在 Discord 卡片上按**透過 Discord 連結**。在 Discord 上確認後，就會直接回到原頁面。
* **使用 Discord 登入。** 使用 Discord 登入 Reverie 時，也會一併連結機器人——除非你曾在主控台上取消連結，這樣它會維持未連結狀態，直到你自己再次連結。
* **從 Discord。** 在伺服器中或在你和機器人的私訊中執行 `/link-account`。回覆只有你看得到：一個**連結我的帳號**按鈕，只能使用一次，**10 分鐘**後失效。開啟它並登入，兩個帳號就連結起來了。

## 在私訊中一對一聊天 \[#chat-one-on-one-in-your-dms]

直接傳私訊給機器人，或在任何有這個機器人的伺服器中執行 `/chat`——對話會移到你的私訊中，只有你看得到。單獨使用 `/chat` 會列出可選的角色；加上名稱則可以搜尋角色。

* **一次一個角色。** `/chat` 可以換成其他角色，`/chats` 會列出你在私訊中聊過的角色。每個角色都保有自己的對話，所以換回來時可以接著上次的進度聊。
* **每則訊息都會得到回覆**，由機器人發出，回覆上方會以小字標示角色的名稱。圖片、語音訊息和記憶的運作方式都和在頻道中一樣。
* **你自己的訊息由你付費。** 伺服器的付費模式和上限在這裡不適用。
* **18+ 角色**依照你帳號的 18+ 設定：設定關閉時，這些角色會被隱藏，也無法在你的私訊中聊天。
* `/remove-character` 會結束目前的對話——對話會保存下來，可以從 `/chats` 找回——`/reset-chat` 則會在請你確認後清除對話。
* 在 `/settings` 的子指令中，只有 `model`、`language` 和 `chat-style` 適用於私訊。

如果機器人表示無法傳訊息給你，請在 Discord 的隱私設定中允許來自伺服器成員的私訊，然後再試一次。你最近的私訊對話也會出現在整合主控台的**私人聊天**下，按**在網頁版繼續**就能在瀏覽器中接著聊。

## 把機器人加入伺服器 \[#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`              | —           | 伺服器、私訊                   | 私下列出所有指令                                                                                 |
| `/link-account`      | —           | 伺服器、私訊                   | 發布一個一次性連結，用來連結你的 Discord 和 Reverie 帳號                                                    |
| `/chat`              | `name`（選填）  | 伺服器、私訊                   | 在私訊中選擇或切換角色。在伺服器中使用時，會把選項傳送到你的私訊                                                         |
| `/chats`             | —           | 伺服器、私訊                   | 你在私訊中聊過的角色，可在它們之間切換                                                                      |
| `/add-character`     | `name`（必填）  | 伺服器 · Manage Channels    | 把角色加入這個頻道並打招呼                                                                            |
| `/remove-character`  | `name`（必填）  | 伺服器 · Manage Channels、私訊 | 移除角色並刪除它的 webhook。在私訊中則會結束目前的對話                                                          |
| `/list-characters`   | —           | 伺服器                      | 列出這個頻道的角色，每個角色都附有移除按鈕                                                                    |
| `/character-info`    | `name`（必填）  | 伺服器、私訊                   | 簡介、圖片、年齡、性別、評分、分類、標籤和 NSFW 標記，並附上角色頁面的連結。若已連結帳號，在你收到該角色的幾則回覆、且它開放評價後，還會提供 1–5★ 按鈕讓你為角色評分 |
| `/reset-chat`        | —           | 伺服器 · Manage Channels、私訊 | 刪除頻道的訊息和摘要，並回報刪除的數量。在私訊中則會在你確認後清除目前的對話                                                   |
| `/regenerate-reply`  | `model`（選填） | 伺服器、私訊                   | 重新生成角色的上一則回覆，也可以只在這次改用其他模型                                                               |
| `/reply-suggestions` | —           | 伺服器、私訊                   | 以按鈕呈現三則建議回覆；點一下就會以你的訊息送出                                                                 |
| `/settings`          | 一個子指令（必填）   | 伺服器、私訊                   | 頻道設定和個人設定                                                                                |
| `/plugins`           | 一個子指令（必填）   | 伺服器、私訊                   | 顯示這裡正在執行的插件；安裝、移除或開關官方插件和你自己的插件                                                          |
| `/server`            | —           | 伺服器 · Manage Server 或付費方 | 誰能和角色聊天、每位成員的每日上限、已封鎖的成員，以及用量                                                            |
| `/my-account`        | —           | 伺服器、私訊                   | 點數、方案用量、續訂日期、聊天數                                                                         |
| `/daily`             | —           | 伺服器、私訊                   | 領取每日簽到                                                                                   |
| `/notify`            | —           | 伺服器、私訊                   | 角色能否主動傳訊息給你，以及哪些通知會送到你的私訊                                                                |

`/plugins` 接受 `list`、`install`、`remove`、`enable` 或 `disable`。只會提供官方插件和你自己的插件，而且僅限提示詞插件和工具插件；需要填寫設定的插件無法從機器人安裝。工具插件的結果會以角色的名稱發布成一張簡短的卡片。在頻道中，變更插件需要 **Manage Channels** 權限，或是曾經把角色加入該頻道，而任何人都可以查看清單；在你的私訊中，插件由你自己決定。

單獨的 `/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` 代表不設上限                         |

網頁主控台上也有相同的設定，依頻道分開，名稱分別是**付費模式**、**每日點數上限**、**聊天風格**、**回覆模式**、**回覆語言**和**你的模型**。在有人於頻道中傳送訊息之前，語言和模型這兩項在主控台上會維持停用。

## 角色何時會回覆 \[#when-a-character-replies]

角色會在被 **@提及**、有人**回覆**它的某則訊息，或頻道開啟自動回覆時回應。自動回覆**預設為關閉**，所以剛加入的角色在被點名之前都會保持安靜。

當一個頻道中有好幾個角色時，這個頻道就像一場群組聊天：一份提示詞會列出在場的每個角色，再由模型決定誰發言。提到某個名稱只是隨你的訊息一起傳遞的提示，而不是強制該角色回答的開關。[群組聊天 →](https://reverie.im/zh-TW/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**      | 每位發送者自己的餘額                                   | 無——每位成員只受自己的餘額限制                    |

訊息的花費和在網頁應用程式中一樣：依 Token 計算，再乘以模型的點數倍率。每日計數會在 **00:00 UTC** 重設，主控台上的頻道設定對話框會顯示今天的用量與上限。

如果你想把費用轉到自己的帳號上——例如當初設定機器人的人已經離開了——請開啟 `/server` 並按**用我的帳號付費**。這會套用到伺服器中所有由付費方支付的頻道。

## 伺服器規則 \[#server-rules]

`/server` 會開啟一個只有你看得到的面板。擁有 **Manage Server** 權限的成員可以開啟它，為伺服器角色付費的人也可以。面板會顯示今天和過去七天的用量、今天用量最多的成員，以及三條規則：

| 規則           | 選項                                                  |
| ------------ | --------------------------------------------------- |
| **誰能聊天**     | **所有人**（預設）、**僅限管理員**，或**擁有特定身分組的成員**——在第二個選單中挑選身分組 |
| **每位成員每日上限** | 每位成員每個 UTC 日最多能花費多少付費方的點數，或**不設上限**（預設）。只在由付費方支付時生效 |
| **已封鎖的成員**   | 在這裡選取的成員，在整個伺服器中都無法和角色聊天                            |

這裡的管理員是指擁有 **Manage Server** 權限的成員。管理員和付費帳號永遠不會被擋在外面，無論是封鎖還是存取模式都一樣；在挑選任何身分組之前，**擁有特定身分組的成員**只允許他們發言。被存取模式排除的成員會收到一次提示，告知只有部分成員能和角色聊天；被封鎖的成員則完全不會得到回覆。

## 年齡限制角色 \[#age-restricted-characters]

18+ 角色只會在年齡限制頻道、年齡限制類別下的頻道，或設為 18+ 的伺服器中的任何地方回覆——討論串則依照它所屬的頻道。在其他地方，機器人會說明原因，而不是回覆。在你的私訊中，則改為依照你帳號的 18+ 設定。

## 頻道中可以使用的功能 \[#what-works-in-a-channel]

* **圖片。** 角色可以在 Discord 中生成圖片。
* **語音輸出。** 角色可以傳送語音訊息。
* **語音輸入。** 你傳送的語音訊息會被轉成文字，上限 **25 MB**。
* **記憶。** 當模型支援工具時，角色會儲存、更新和刪除記憶，世界書的設定也會納入它的上下文。
* **紀錄。** 頻道內容變長時，會自動產生摘要。
* 在頻道中加入第二個角色時，會沿用該頻道的聊天風格、付費模式和每日上限。

## 通知與簽到 \[#notifications-and-check-ins]

`/notify` 可以設定兩件事。**角色主動傳訊息給你**是你帳號的主動程度，與網站上的設定相同：有訂閱時，你在私訊中正在聊的角色可以主動傳訊息給你——請見[主動訊息](https://reverie.im/zh-TW/docs/chatting/proactive-messages)。**也傳送到這裡**用來選擇你的哪些 Reverie 通知也會送到你的私訊；一開始只開啟了**帳號與帳單**——請見[通知](https://reverie.im/zh-TW/docs/account/notifications)。整合主控台上也提供相同的選項。

`/daily` 會領取你的[每日簽到](https://reverie.im/zh-TW/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/zh-TW/docs/integrations/telegram-bot)——同樣的角色，在 Telegram 中
* [Reverie 實驗室](https://reverie.im/zh-TW/docs/integrations/labs)——整合主控台所在的位置
* [群組聊天](https://reverie.im/zh-TW/docs/chatting/group-chats)——多角色對話如何運作
* [點數](https://reverie.im/zh-TW/docs/billing/credits)——一則訊息的花費
