PluralKitサポート
TomoriBotはPluralKitのプロキシメッセージを理解します。サポートを有効にすると、PluralKitが削除する元のメッセージではなく、プロキシされたWebhookメッセージに返信します。また、システムの各メンバーを、共有のDiscordアカウントとしてひとまとめにするのではなく、それぞれ固有の名前・アイデンティティ・個人記憶を持つ別々の人物として扱います。このページではユーザー向けの機能面を説明しています。内部設計についてはPluralKitアダプターアーキテクチャをご覧ください。共通の安全性モデルについてはメッセージプロキシ対応で解説しています。
/personal message-proxy service:pluralkit を実行します。アカウントごとの個人設定なので、サーバー管理者が設定する項目はなく、どのサーバーでも有効になります。システムのメンバーが個別にオプトインする必要はありません。選択はメッセージを送信するDiscordアカウントに紐づきます。無効にするには /personal message-proxy service:none を実行します。
PluralKitを使っていない場合は、オフのままにしてください。送信するすべてのメッセージに、意味のない小さな遅延がかかってしまいます(下記参照)。
有効にすると変わること
Section titled “有効にすると変わること”- 正しいメッセージに返信します。 この機能がないと、生成の途中でPluralKitが元のメッセージを削除し、トモリは存在しないメッセージに返信してしまいます。有効にすると、少し待ってからプロキシを検出し、Webhookの再投稿に返信します。プロキシ処理で通常は失われてしまう、トモリのメッセージへのプロキシされたリプライも認識されます。
- 返信生成中の追加発言にも対応します。 トモリが同じメンバーへの返信を生成している最中に別のプロキシメッセージを送信すると、トモリは一度中断し、そのメンバーの最新メッセージに返信します。同じアカウントの別のメンバーや他アカウントのメンバーは通常どおり順番を待ちます。
- メッセージに短い待ち時間が入ります。 PluralKitがメッセージを削除して再投稿するかどうかを確認するため、トモリは約2秒待ちます(セルフホストの場合は
MESSAGE_PROXY_WAIT_MSで調整可能)。プロキシされたメッセージは通常それより早く解決されます。プロキシされていないメッセージは、その分だけ少し遅れて処理されます。これはオプトインで受け入れるトレードオフであり、コマンドの確認メッセージにも明記されています。 - 各メンバーは独立した人物になります。 トモリはメンバーの名前、所属するシステム、ホストのDiscordアカウントを、3つの独立した事実として認識します。別のメンバーとしてフロントすれば、「アカウント」としてではなく、そのメンバーとしてトモリと話すことになります。
- 個人記憶はメンバーごとに保存されます。 あるメンバーについてトモリが学んだ事実は、そのメンバーのものとして保存されます。サーバー全体の記憶にはならず、ホストアカウントにも紐づかず、システムメイトに漏れることもありません。
- 初対面や再会の判定もメンバーごとに行われます。 各メンバーから最後にメッセージを受け取った日時を個別に記録しているため、しばらく話していなかったメンバーが戻ってきた際には、同じアカウントから誰かがずっと発言していたとしても、おかえりの挨拶をします。初めて会うメンバーは初対面として扱われ、今日すでに発言していたメンバーはそのまま会話の一部として扱われます。
- プロフィールの1回限りのインポート。 トモリがあるメンバーを初めて見かけたとき、そのメンバーのPluralKit上の公開プロフィール文(あれば)が、初期の個人記憶として保存されることがあります。これにより、最初の会話から代名詞・バウンダリー・好みを尊重できます。これは同期ではなく1回限りのスナップショットです。後からPluralKit上でプロフィールを編集しても反映されません。記憶を変えたいときは、チャットで直接伝えてください(「それは忘れて」「実は…」など)。
- 代名詞の1回限りのインポート。 PluralKit上でメンバーの代名詞が公開されている場合、最初に発言を見かけたときにそのメンバー自身の代名詞設定へ入力され、最初の返信から反映されます。それ以降はその設定があなたと彼女の間のものとなるため、後からPluralKit上で変更しても上書きされず、修正は
/personal config identity:で行います。代名詞を非公開にしている、または設定していないメンバーは、空欄のまま始まります。 - メンバーの会話中に参照されるシステムの説明文。 システムに公開の説明文が設定されている場合、トモリはそれを保存し、あなたのシステムのメンバーが会話にいる間ずっと参照します。これにより、システム全体のバウンダリーをメンバーごとに繰り返さなくても全員に適用されます。こちらは編集が反映されます:PluralKit上で変更または削除すると、次にメンバーが発言したときに反映されます。表示はシステムごとに1回だけで、個々のメンバーには紐づきません。非公開または未設定の場合は何も表示されません。
知っておくと良いアイデンティティの詳細
Section titled “知っておくと良いアイデンティティの詳細”- メンバーは名前ではなく、PluralKitの安定した内部IDで認識されます。メンバーの名前や表示名を変更しても問題ありません:トモリは同じ人物だと認識したまま、新しい名前を表示に反映します。
- アイデンティティは「現在誰がフロントしているか」ではなく、メッセージ自体から解決されます:トモリがフロンター情報をポーリングすることはありません。メンバーは、プロキシメッセージを送信した瞬間に会話の参加者になります。逆に言えば、オプトイン中に一度もプロキシしたことのないメンバーの存在を、トモリが知る手段はありません。
- 名前を呼ぶだけでメンバーが文脈に入ります。 人間の参加者と同じ挙動です。「スパロウはどう思ってた?」と誰かが尋ねれば、スパロウ本人が最近発言していなくても、トモリはスパロウの記憶を読み込みます。対象は、ホストアカウントがそのサーバーにいるシステムのメンバーに限られます。また、複数の人物やメンバーが同じ名前に該当する場合は、推測せずに無視します。
- システム名を呼んでも、メンバー全員の記憶がまとめて読み込まれることはありません。読み込まれるのは、実際に会話にいるメンバーと、名前を呼ばれたメンバーだけです。そのため、フロント中のメンバーの会話が、その場にいないメンバーの情報を露出させることはありません。
- 非公開のシステムデータは非公開のままです。トモリが見られるのは、PluralKitがそのメッセージのメンバーとシステムについて公開している情報だけで、メンバーのACLで保護されたフィールドにはアクセスできません。システム名が非公開の場合は、システムタグ、それもなければ「プルーラルシステム」という表現にフォールバックします。
設定はホストアカウントに残ります
Section titled “設定はホストアカウントに残ります”すべてを制御するのは、引き続きあなたのDiscordアカウントです:プライバシーレベル、ブラックリスト、クールダウン、クォータ、APIキー、そしてアカウントレベルの /personal 設定は、メンバー間で共有され、ホストアカウントに紐づきます。プライバシーをフルに設定したり、サーバーでブラックリストに入れられたりすると、あなたのすべてのメンバーが一括で保護されます。メンバーごとに設定できるのは、会話上のアイデンティティ、プロフィール設定、外見、記憶です。
現在の制限事項
Section titled “現在の制限事項”/personal memories identity:で、保存されたメンバーのグローバル記憶やペルソナ記憶を編集します。メンバーのプロフィール、ニックネーム、外見を編集するには/personal config identity:を使用します。- プロフィールのインポートは、メンバーごとに一度きりです。その後のPluralKitのプロフィール編集は反映されません。代わりにチャットで伝えてください。
- トモリはメンバーを
@メンションできません(Webhookはメンション不可のため)。メンバーには名前で呼びかけます。 - PluralKitのAPIで再投稿を検証できない場合、トモリはその投稿を無視します。PluralKitが元のメッセージをすでに削除している場合、その発言には応答しません。メンバーのアイデンティティも作成されません。
上記に記載されていない制限については、動作するはずのものとみなして、サポートサーバー(/support discord)でバグとして報告してください。