公式のDiscord APIは、ボットとクライアント向けに作られた低レベルのインターフェースです。ゲートウェイイベントを直接扱い、キャッシュを手動で管理し、インテントを調整する必要があります。Noxyrサーバー APIは、1つのサーバーに限定された高レベルのHTTP APIで、完成済みの分析データを返します。両者は異なる問題を解決します。それぞれをいつ使うべきかを説明します。
Discord APIが提供するもの
Discord APIのドキュメント(検索されることが非常に多く、Google Trendsでは「discord api documentation」の検索が前年比700%増と示されています)は、Discord自体が管理するすべてのものに関する一次情報源です。メッセージ、ユーザー、ギルド、ロール、チャンネル、ボイス、スレッド、モデレーションなどが対象です。操作にはREST APIを、イベントにはWebSocketゲートウェイを利用します。リアルタイムで何かを作るには、永続的な接続を開き、READYとハートビートを処理し、キャッシュの無効化とレート制限のバケットを扱う必要があります。
Noxyrサーバー APIが提供するもの
Noxyrサーバー APIははるかに小さなインターフェースです。ベアラートークンによって1つのサーバーに限定された、読み取り専用のエンドポイントが6つあります。「今月のチケットは何件か?」や「通貨ごとの売上は?」といった質問に答えます。Discord APIではこれらに答えられません。基礎となるデータはDiscordではなく、Noxyrのデータベースにあるからです。
並べて比較
- 認証:Discordは、インテント付きのOAuth2またはボットトークンを使います。Noxyrは、サーバーごとに1つのベアラートークンを使います。
- 通信方式:Discordは、REST+WebSocketゲートウェイです。Noxyrは、ブラウザ向けにCORSを有効にした通常のHTTPSです。
- 対象範囲:Discordは、ボットが参加しているすべてのサーバーにまたがるグローバルなものです。Noxyrは、特定の1つのサーバーに紐づけられます。
- データの形:Discordは、ギルド、メンバー、メッセージなどの生のオブジェクトを返します。Noxyrは、集計値、合計、平均、日ごとのバケットを返します。
- レート制限:Discordは、ルートごとのバケット制限を使います。Noxyrは、キーごとに一律60リクエスト/分です。
- セットアップの手間:Discordでは、ボットアプリ、招待、インテント、イベントハンドラーが必要です。Noxyrでは、キーを生成するのに1クリックで済みます。
Discordを選ぶべき場合…
- リアルタイムのイベントが必要な場合です(メッセージが届いた、メンバーが参加した、ボイスチャンネルが変わった、など)。
- アプリからメッセージを送信したり、チャンネルを編集したり、ユーザーをBANしたり、ロールを管理したりしたい場合です。
- Discordボットやサードパーティ製のDiscordクライアントを開発している場合です。
Noxyrサーバー APIを選ぶべき場合…
- ボットを維持せずに、公開Webサイトでサーバーのライブ統計を表示したい場合です。
- チケットの分析、売上データ、レビューの平均、ギブアウェイ(プレゼント企画)への参加状況が必要な場合です。これらはDiscordが保存していないデータです。
- プロキシを使わずに、ブラウザのダッシュボードから呼び出せる、CORSに対応したJSONが欲しい場合です。
- 安定したバージョン管理されたインターフェースが欲しい場合です。スコープの切り替えによって、何も再デプロイせずにデータの公開を止められます。
両方を組み合わせて使う
2つのAPIは相性が良い組み合わせです。自分のボットではDiscord APIを使ってイベントに反応し、Webサイトでは、Noxyrサーバー APIを使って集計された状態を読み取ります。こうすれば、公開ダッシュボードにボットのインテントやゲートウェイ接続は一切不要で、HTTPSリクエスト1回で十分です。