getting-started
カスタムボット
あなたのボット、あなたのブランド。メンバーにはあなたの名前とアバターが表示されます。カスタムボットの仕組み、必要な権限、プランの制限、セキュリティについて理解しましょう。
概要
Restore Hubの展開はすべて、お客様が作成し所有するカスタムボットによって行われます。すべてのサーバーが同じブランディングを表示する共有検証ボットとは異なり、カスタムボットは、選択した名前、アバター、および(Premium+の場合)メンバーリストにカスタムステータスを表示します。
このアプローチでは、ブランディングを完全にコントロールすることができ、会員が共有ボットに抱きがちな「このボットは50,000のサーバーにある」という信用不安も解消されます。あなたのボットはあなただけのものです。
必要なもの
カスタムボットを追加するには、Discord Developer Portal (https://discord.com/developers/applications) から5つの情報が必要です:
- クライアントID- 一般情報ページにあります。アプリケーション/ボット固有の識別子です。
- クライアント・シークレット- OAuth2 → Generalにあります。Reset Secret "をクリックすると、新しいシークレットが生成されます。このシークレットは一度しか見ることができません。
- ボットトークン- Bot → Reset Tokenの下にあります。これはすべてのAPIコールを認証するクレデンシャルです。
- 公開鍵- 一般情報にある。Discordからのインタラクションペイロードを確認するために使用される。
- リダイレクトURI- OAuth2 コールバック URL (例: https://restorehub.net/api/callback)。開発者ポータルの OAuth2 リダイレクトリストに追加する必要があります。
警告クライアントシークレットとボットトークンは生成時に一度だけ表示されます。これらを紛失した場合は、リセットして新しいものを生成する必要があります。Restore HubはこれらをAES-256で暗号化し、作成後は決してダッシュボードに表示しません。
HTTPインタラクションの仕組み
Restore Hubは、従来のGateway WebSocketの代わりにDiscordのInteractions Endpointを使用します。ボットをセットアップすると、Restore Hubは次のようなユニークなエンドポイントURLを提供します:
https://restorehub.net/api/interactions/{botId}HTTPインタラクションとゲートウェイ - 主な違い
このURLを Discord Developer Portal の General Information → Interactions Endpoint URL に貼り付けます。Discord はこの URL を ping で確認し、確認されるとすべてのスラッシュコマンドの呼び出しとボタンのクリックを HTTP POST リクエストとしてこのエンドポイントにルーティングします。
ゲートウェイ接続がないため、ボットは永続的な WebSocket を維持しません。これにはいくつかの意味があります:
- ステータス・ドットなし- ボットはメンバーリストに緑・黄・赤の丸なしで表示されます。これは意図的なもので、見た目がすっきりします。
- ボット自身からリアルタイムのゲートウェイイベントがない- ボットはMESSAGE_CREATEやGUILD_MEMBER_ADDのような生のイベントを自身のGatewayを通して受け取ることはありません。アンチヌークやアンチレイドのイベントは別のシステムレベルのゲートウェイ接続を通して受け取ります。
- リソース使用量の削減- WebSocketハートビートなし、再開/再接続ロジックなし。1つのインタラクションにつき1つのHTTPリクエスト。
- より良いスケーリング- Restore Hubは、何千ものゲートウェイ接続を維持することなく、何千ものボットにサービスを提供することができます。
- すべてのREST API操作は引き続き動作します。- ロールの割り当て、メンバーのキック、チャンネルの作成、バックアップのフェッチ、プルはすべてDiscordのREST APIを使用しており、Gateway接続を必要としません。
ヒントPremium+プランでは、Gateway接続がなくてもカスタムボットのプレゼンス(「検証中」や「5,000人のメンバーを監視中」などのステータスやアクティビティテキスト)を設定できます。Restore Hubは定期的なREST APIコールでこれを管理します。
必要なDiscordパーミッション
ボットをDiscordサーバーに招待する場合、招待リンクにはOAuth2パーミッションの整数値が含まれます。Restore Hub は以下のパーミッションを要求します:
| 許可|必要か?| 使用目的
| メンバーのキック|推奨|対核/対レイドレスポンスアクション、/delunauthedコマンド、セキュリティーキック。
| オプション|アンチ・ヌーク・レスポンス・アクション、/ブラックリスト強制||メンバーを追放する。
| チャンネルを見る|必須|バックアップのためにチャンネル構造を読む。
| メッセージ履歴を読む|必須|テキストチャンネルのメッセージをバックアップする
| チャンネルの管理|オプション|バックアップからチャンネルを復元する(チャンネルの作成/削除)|ギルドの管理|オプション|バックアップからチャンネルを復元する(チャンネルの作成/削除)|ギルドの管理
| ギルドの管理|オプション|バックアップからサーバー設定をリストアする。
| オプション:絵文字とステッカーをバックアップから復元する。
| メッセージの送信|オプション|設定されたログ・チャンネルにログ・メッセージを送信します。
| インスタント招待の作成|オプション|アラート自動プル用の招待リンクの作成警告ボットの最高ロールは、サーバーのロール階層で検証されたロールよりも上に位置していなければなりません。Discordはボットが自分の最高ロールよりも高いロールを割り当てられないようにしています。
複数のボットとプランの制限
一つのリストアハブアカウントで複数のカスタムボットを作成することができます。各ボットは異なるサーバーに割り当てることができます。これは、異なるブランディングで複数のコミュニティを運営する場合に便利です。
| プラン|最大ボット数|最大サーバー数
|---|---|---|
| フリー|1|2
| プレミアム|5|10
| ビジネス|25|50
| エンタープライズ|無制限ヒント一つのボットを複数のサーバーで使用することができます。コミュニティごとに異なるブランディングが必要な場合を除き、サーバーごとに別のボットを用意する必要はありません。
ボットの存在と活動
プレミアム以上では、ボットにカスタムプレゼンスを設定できます。これにより、メンバーリストに表示されるステータスとアクティビティテキストが制御されます。
| 設定|オプション
|---|---|
| ステータス|オンライン、アイドル、邪魔しない、見えない
| アクティビティタイプ|再生中、視聴中、視聴中、対戦中
| アクティビティ・テキスト|任意の文字列(例:"restorehub.net "または "10Kメンバーを保護")。ボットトークンの暗号化とセキュリティ
すべての機密情報(ボットトークン、クライアントシークレット)はAES-256を使用して暗号化され、マスター暗号化キーは環境変数に保存されます。Restore Hubがボットに代わってAPIコールを行う必要がある場合、メモリ内でトークンを復号化して使用し、平文を破棄します。
トークンはダッシュボードでは書き込み専用です。初期設定後、クライアントIDとリダイレクトURI(機密情報ではありません)は表示されますが、ボットトークンとクライアントシークレットは表示されません。これらを更新する必要がある場合は、新しい値を入力する必要があります。
カスタムボットでできないこと
Restore Hubはゲートウェイの代わりにHTTPインタラクションを使用するため、ボットが独自にできないことがいくつかあります:
- 生のメッセージイベントをリッスンできない - ボットは送信されたメッセージを見ることができません。メッセージのバックアップはオンデマンドで REST API 経由で取得されます。
- リアルタイムのタイピング・インジケータを表示できない、またはメッセージに自動応答できない - ゲートウェイがないということは、MESSAGE_CREATE イベントがないということです。
- 音声チャネルのアクティビティを検出できない - 音声状態の更新にはゲートウェイ接続が必要です。
- バックグラウンドで継続的に実行することはできません - ボットは、ユーザーがインタラクションをトリガーしたとき、またはRestore HubがREST APIコールを行ったときにのみ「起動」します。
ヒント: これらの制限はコア機能には影響しません。検証、ロールの割り当て、プル、バックアップ、そして全てのセキュリティ機能はREST APIとインタラクションエンドポイントを通して完璧に動作します。
スラッシュコマンド (Premium+)
Premium以上では、サーバー管理者がDiscordで直接使用できるスラッシュコマンドをボットがサポートしています。Restore Hub はこれらのコマンドをボットにグローバルに登録します。利用可能なコマンド
| コマンド|説明
|---|---|
/setup | 現在のサーバーでボットを設定する(検証ロール、ログチャンネルなどを設定)
|/verify-embed|現在のチャンネルに検証ボタンを埋め込みます。
| このサーバーからターゲットサーバーへのメンバープルを開始します。
| バックアップ|現在のサーバーの手動バックアップを作成します。
/restore|バックアップを現在のサーバーにリストアします。
| このサーバーに認証済みでプル可能なメンバーが何人いるかを表示します。
| ボット情報、稼働時間、プランの詳細を表示します。
| /blacklist | Discordユーザーを全サーバーで検証できないようにブラックリストに入れます。
| ブラックリストからユーザーを削除する。
| ホワイトリスト(whitelist): セキュリティチェックを回避するためのホワイトリストルールを追加します。
| すべての検証済みメンバーにロールを割り当てる。
| すべての検証済みメンバーからロールを削除する。
| 認証されていないメンバー全員をキックする。
| /deluser | 特定の検証済みメンバーを削除し、そのロールを取り消す。
| サーバー検証の統計とファネルデータを表示する。
| /alerts | メールとウェブフック通知によるnuke/raid/削除アラートの設定。
| ファイアウォール|ファイアウォールルールの管理(IP、国、ASN等の追加/削除