# Discord ボット

> DM でキャラクターと 1 対 1 で話すか、サーバーにキャラクターを置いて、誰が話せて誰が払うかを決める。

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

Reverie のボットは、Discord の 2 つの場所にキャラクターを連れてきます。1 対 1 で話すためのボットとの**ダイレクトメッセージ**（DM）と、キャラクターがそれぞれ自分の名前とアイコンで話す**サーバーのチャンネル**です。キャラクターと話す人は全員、自分の Discord アカウントに連携した Reverie アカウントが必要です——無料のもので十分です。返信はすべて、いずれかの Reverie アカウントにクレジットで請求されます。

## アカウントを連携する \[#link-your-account]

1 つの Discord アカウントは、ちょうど 1 つの Reverie アカウントに対応します。次のどの方法でもつながります。

* **連携ダッシュボードから。** アプリで **Labs → Discord & Telegram ボット** に進み、Discord のカードで **Discordで連携** を押します。Discord で承認すると、そのまま戻ってきます。
* **Discord でサインインする。** Discord で Reverie にサインインすると、ボットも一緒に連携されます——ただし、以前にダッシュボードで連携を解除していた場合は、自分でもう一度連携するまで解除されたままです。
* **Discord から。** サーバーの中か、ボットとの DM で `/link-account` を実行します。返信はあなたにしか見えず、1 回だけ使えて **10 分**で期限が切れる **アカウントを連携** ボタンが付いています。開いてサインインすれば、二つのアカウントがつながります。

## DM で 1 対 1 で話す \[#chat-one-on-one-in-your-dms]

ボットに DM を送るか、ボットがいるサーバーで `/chat` を実行します——会話はあなたの DM に移り、あなたにしか見えません。`/chat` だけなら選べるキャラクターが表示され、名前を付ければ検索できます。

* **一度に 1 人のキャラクター。** `/chat` で別のキャラクターに切り替え、`/chats` で DM で話したことのあるキャラクターを一覧できます。それぞれが自分の会話を持っているので、戻れば前回の続きから話せます。
* **どのメッセージにも返信が来ます。** 投稿するのはボットで、返信の上に小さな文字でキャラクターの名前が出ます。画像、ボイスメッセージ、記憶はチャンネルと同じように使えます。
* **自分のメッセージは自分で払います。** サーバーの支払いモードや上限はここでは効きません。
* **18 歳以上向けのキャラクター** は、アカウントの 18 歳以上向け設定に従います。オフなら表示されず、DM で話すこともできません。
* `/remove-character` は今の会話を終えます——会話は保存され、`/chats` から戻れます。`/reset-chat` は確認のうえで会話を消去します。
* `/settings` のサブコマンドのうち、DM で効くのは `model`、`language`、`chat-style` だけです。

ボットがメッセージを送れなかったと言う場合は、Discord のプライバシー設定でサーバーメンバーからの DM を許可してから、もう一度試してください。最近の DM の会話は連携ダッシュボードの **プライベートチャット** にも表示され、**Webで続ける** でブラウザから続きを話せます。

## ボットをサーバーに追加する \[#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                       | 最後のキャラクター返信を引き直す。その 1 回だけ別のモデルを使うこともできる                                                                           |
| `/reply-suggestions` | —           | サーバー、DM                       | 返信候補 3 つをボタンで表示。押すとあなたのメッセージとして送られる                                                                               |
| `/settings`          | サブコマンド（必須）  | サーバー、DM                       | チャンネル設定と個人設定                                                                                                      |
| `/plugins`           | サブコマンド（必須）  | サーバー、DM                       | ここで動いているプラグインを表示し、公式プラグインと自分のプラグインを追加・削除・切り替え                                                                     |
| `/server`            | —           | サーバー · Manage Server または支払い担当 | キャラクターと話せる人、メンバーごとの 1 日の上限、ブロック中のメンバー、使用量                                                                         |
| `/my-account`        | —           | サーバー、DM                       | クレジット、プランの使用量、更新日、チャット数                                                                                           |
| `/daily`             | —           | サーバー、DM                       | デイリーチェックインを受け取る                                                                                                   |
| `/notify`            | —           | サーバー、DM                       | キャラクターから話しかけてよいか、どの通知を DM にも送るか                                                                                   |

`/plugins` は `list`、`install`、`remove`、`enable`、`disable` のいずれかを取ります。対象は公式プラグインと自分のプラグインだけで、しかもプロンプトプラグインとツールプラグインに限られます。設定の入力が必要なプラグインはボットからは入れられません。ツールプラグインの結果は、キャラクターの名前で短いカードとして投稿されます。チャンネルでプラグインを変えるには **Manage Channels** か、そのチャンネルにキャラクターを追加したことが必要で、一覧は誰でも見られます。DM では、プラグインはあなたが自由に変えられます。

`/settings` だけでは有効なコマンドになりません——常に 6 つのサブコマンドのどれかを取ります。

| サブコマンド                   | オプション                     | 必要な権限           | 効果                                                                            |
| ------------------------ | ------------------------- | --------------- | ----------------------------------------------------------------------------- |
| `/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 の 1 日あたりのクレジット上限。`0` は無制限                                                 |

同じ設定はウェブのダッシュボードにもチャンネルごとにあり、**Payment mode**、**Daily credit limit**、**Chat style**、**Reply mode**、**Response language**、**Your model** という名前です。言語とモデルは、誰かがそのチャンネルでメッセージを送るまで無効のままです。

## キャラクターが返すとき \[#when-a-character-replies]

キャラクターは **@メンション**されたとき、誰かがその発言に**返信**したとき、あるいはチャンネルが自動返信のときに答えます。自動返信は**既定でオフ**なので、追加したばかりのキャラクターは呼ばれるまで黙っています。

一つのチャンネルに複数のキャラクターがいると、そのチャンネルは一つのグループチャットとして振る舞います。ひとつのプロンプトにその場のキャラクター全員が並び、誰が話すかはモデルが決めます。名前を挙げるのはメッセージと一緒に渡されるヒントであって、そのキャラクターに答えさせるスイッチではありません。[グループチャット →](https://reverie.im/ja/docs/chatting/group-chats)

## スレッド \[#threads]

テキストチャンネルのスレッドは、そのチャンネルのキャラクターと話し、支払いモード・返信モード・チャットスタイルもチャンネルに従いますが、履歴は自分だけのものを持ちます——チャンネルを散らかさずにサイドストーリーを進める場所です。最初はチャンネルの応答言語で始まり、スレッドの中で使った `/settings language` と `/settings model` はそのスレッドにだけ効きます。スレッドで使ったクレジットはチャンネルの 1 日の上限に数えられます。キャラクターの顔ぶれやチャンネルのほかの設定を変えるコマンド——`/add-character`、`/list-characters`、`/plugins`、`/settings chat-style` など——は、親チャンネルで実行するよう案内します。フォーラムの投稿やほかの種類のスレッドには、キャラクターはいません。

## 誰が払うか \[#who-pays]

| 支払いモード             | 請求先                                                         | 効く上限                                             |
| ------------------ | ----------------------------------------------------------- | ------------------------------------------------ |
| **Owner pays**（既定） | サーバーの支払い担当：そのサーバーに最初にキャラクターを追加した Reverie アカウント。ほかの誰かが引き継ぐまで | チャンネルの 1 日のクレジット上限と、`/server` で決めたメンバーごとの 1 日の上限 |
| **User pays**      | 送信者それぞれの残高                                                  | なし——各メンバーは自分の残高の範囲まで                             |

メッセージの費用はウェブアプリと同じで、トークン単位にモデルのクレジット倍率を掛けたものです。1 日のカウンターは **00:00 UTC** にリセットされ、ダッシュボードのチャンネル設定のダイアログに今日の使用量と上限が出ます。

請求を自分のアカウントに移したいとき——たとえばボットを設定した人がいなくなったとき——は、`/server` を開いて **自分のアカウントで支払う** を押します。サーバー内で支払い担当が払っているすべてのチャンネルに適用されます。

## サーバーのルール \[#server-rules]

`/server` は、あなたにしか見えないパネルを開きます。開けるのは **Manage Server** を持つメンバーと、サーバーのキャラクターの代金を払っている人です。今日と過去 7 日間の使用量、今日いちばん使ったメンバー、そして 3 つのルールが表示されます。

| ルール              | 選択肢                                                                  |
| ---------------- | -------------------------------------------------------------------- |
| **話せる人**         | **全員**（既定）、**管理者のみ**、または **特定のロールを持つメンバー**——ロールは 2 つ目のメニューで選ぶ        |
| **メンバーごとの1日の上限** | 1 人のメンバーが UTC の 1 日に使える支払い担当のクレジットの量、または **上限なし**（既定）。支払い担当が払う場合だけ効く |
| **ブロック中のメンバー**   | ここで選んだメンバーは、サーバー内のどこでもキャラクターと話せない                                    |

ここでいう管理者とは **Manage Server** を持つメンバーのことです。管理者と支払い担当のアカウントは、ブロックでもアクセスモードでも締め出されることはなく、ロールをまだ 1 つも選んでいないうちは、**特定のロールを持つメンバー** でも話せるのは彼らだけです。アクセスモードで外れたメンバーには、話せるのは一部のメンバーだけだと一度だけ伝えられます。ブロックされたメンバーには、返信そのものが来ません。

## 年齢制限のあるキャラクター \[#age-restricted-characters]

18 歳以上向けのキャラクターが返信するのは、年齢制限チャンネル、年齢制限付きカテゴリー内のチャンネル、またはサーバー全体が 18 歳以上向けに設定されている場合だけです——スレッドは所属するチャンネルに従います。それ以外の場所では、ボットは返信する代わりに理由を説明します。DM では、18 歳以上向けのキャラクターはアカウントの 18 歳以上向け設定に従います。

## チャンネルで使えるもの \[#what-works-in-a-channel]

* **画像。** キャラクターは Discord で画像を生成できます。
* **音声出力。** キャラクターはボイスメッセージを送れます。
* **音声入力。** あなたが送ったボイスメッセージは文字起こしされます（**25 MB** まで）。
* **記憶。** モデルがツールに対応していれば、キャラクターは記憶を保存・更新・削除し、ワールドブックの設定も文脈に入ります。
* **履歴。** 長くなったチャンネルは自動的に要約されます。
* チャンネルに 2 体目のキャラクターを追加すると、そのチャンネルのチャットスタイル、支払いモード、1 日の上限が引き継がれます。

## 通知とチェックイン \[#notifications-and-check-ins]

`/notify` では 2 つのことを決めます。**キャラクターからの話しかけ** はアカウントの自発性のレベルで、ウェブサイトと同じ設定です。サブスクリプションがあれば、DM で今話しているキャラクターがあなたに先に話しかけてくることがあります——[自発メッセージ](https://reverie.im/ja/docs/chatting/proactive-messages)を参照。**こちらにも送る** では、Reverie の通知のうちどれを DM にも届けるかを選びます。最初は **アカウントと請求** だけがオンです——[通知](https://reverie.im/ja/docs/account/notifications)を参照。連携ダッシュボードでも同じ選択ができます。

`/daily` はウェブサイトと同じ[デイリーチェックイン](https://reverie.im/ja/docs/rewards/daily-check-in)を受け取り、ラッキー抽選へのリンクを付けて返します。

## メッセージの編集と削除 \[#editing-and-deleting-messages]

自分の直近のメッセージを編集すると、それへの返信が作り直されます。

> Discord でメッセージを削除すると、そのメッセージ**とそれ以降のすべてのメッセージ**がキャラクターの履歴から消え、その時点より後に作られた記憶や添付も一緒に消えます。キャラクターの返信もチャンネルから取り除かれます。これは取り消せません。

## ボットが読むもの \[#what-the-bot-reads]

ボットは、見えているチャンネルのすべてのメッセージを受け取ります——メンションや返信がボットに届くのはそのためです。返信のたびに、そのチャンネルの**直近 1 時間のメッセージ**も読みます。自分宛でないものも含めてモデルに文脈として渡し、キャラクターが場についていけるようにします。

ボットがいるチャンネルは、ボットが聞いているチャンネルだと考えてください。それが望みでなければ、キャラクターは専用のチャンネルに置きましょう。

## 上限 \[#limits]

| 上限                          | 値                 |
| --------------------------- | ----------------- |
| チャンネルあたりのキャラクター数            | 5                 |
| Discord のメッセージ長             | 2,000 文字          |
| ボイスメッセージのサイズ                | 25 MB             |
| Discord チャンネルあたりの webhook 数 | 15（Discord 自身の上限） |
| チャンネルあたりの待ち行列メッセージ数         | 3                 |

同じ人からの連続した素早いメッセージは、1 ターンにまとめられます。

## 連携を解除する \[#unlinking]

連携ダッシュボードの **連携を解除** で解除します。ボットをサーバーから外したり、サーバーを抜けたりしても、アカウントの連携は解除されません。解除したあとは、Discord でサインインしてもボットは自動では連携されません——また使いたくなったら **Discordで連携** か `/link-account` を使ってください。

## 関連 \[#related]

* [Telegram ボット](https://reverie.im/ja/docs/integrations/telegram-bot) —— 同じキャラクターを Telegram で
* [Reverie Labs](https://reverie.im/ja/docs/integrations/labs) —— 連携ダッシュボードの場所
* [グループチャット](https://reverie.im/ja/docs/chatting/group-chats) —— 複数キャラクターの会話の仕組み
* [クレジット](https://reverie.im/ja/docs/billing/credits) —— メッセージ 1 通の費用
