Skip to content
評価

投票API

公開APIです。投票の一覧を取得し、プレイヤーが投票したかどうか(Discordまたはニックネームで)を確認できます。Discordボットに適しています。

更新日 2026年10月13日

公開投票APIを使うと、連携機能からサーバーの投票を読み取れます。投票の一覧を取得し、特定のプレイヤーが投票したかを確認し、統計を表示できます。最もよく使われるのは、Discordボットで投票した人にランクや報酬を付与するケースです。

アクセスは読み取り専用です。APIを通じて投票を変更することはできません。

APIキーの取得

  1. サーバーのページを開き、オーナー確認を完了します。
  2. サーバー設定で**「APIキー」セクションを開き、「キーを作成」**をクリックします。
  3. rsk_live_… のような形式のキーをコピーします。表示されるのは一度だけです。パスワードと同じように保管してください。

キーは1つのサーバーに限定することも、すべてのサーバー用に発行することもできます。漏えいしたキーは同じセクションで無効化し、新しいキーを作成してください。

重要: キーをオープンソースコード、リポジトリ、公開されたボット設定に記載しないでください。キーが漏えいした場合は無効化してください。

ベースURLと認証

ベースURL: https://api.millida.net/v2/rating/api

キーは X-Api-Key ヘッダー(または Authorization: Bearer …)で渡します。

curl https://api.millida.net/v2/rating/api/stats \
  -H "X-Api-Key: rsk_live_YOUR_KEY"

キーがテナントのすべてのサーバー用に発行されている場合は、すべてのリクエストに serverId パラメータを追加します。1つのサーバーに紐づいたキーの場合は、このパラメータを省略できます。

プレイヤーの投票を確認する

Discordボットの主な用途は「この人は投票したか」の確認です。エンドポイントは GET /votes/check です。

パラメータ:

  • discordId または nickname — 確認する対象(いずれか1つが必須);
  • since — 期間: today(デフォルト、UTCでのその日の開始時から)または時間数・日数 — 24h、7d、30d;
  • serverId — キーがすべてのサーバー用に発行されている場合は必須。
curl "https://api.millida.net/v2/rating/api/votes/check?discordId=123456789012345678&since=today" \
  -H "X-Api-Key: rsk_live_YOUR_KEY"

レスポンス:

{
  "voted": true,
  "serverId": "srv…",
  "voteId": "clx…",
  "votedAt": "2026-06-16T10:12:00.000Z",
  "discordId": "123456789012345678",
  "nickname": "Steve",
  "since": "2026-06-16T00:00:00.000Z"
}

voted が true の場合、プレイヤーは選択した期間に有効な投票を行っています。有効な投票のみがカウントされます(不正投票や拒否された投票はカウントされません)。

Discordでの確認について: 投票がDiscordアカウントに紐づくのは、プレイヤーがMillidaプロフィールで指定している場合のみです。Discordを連携していないプレイヤーがいる場合は、nickname で確認するか、プロフィールでDiscordを連携するよう案内してください。

投票の一覧

GET /votes はサーバーの投票を新しい順に返します。

パラメータ(すべて任意):

  • status — VALID、HELD、REJECTED_FRAUD、REJECTED_RATE_LIMIT、REJECTED_NO_PLAY_HISTORY、または ALL(デフォルトではすべて返されます);
  • discordId、nickname — プレイヤーで絞り込み;
  • from、to — ISO形式の日付範囲;
  • limit — 返す件数(1〜200、デフォルト50);
  • cursor — nextCursor フィールドの次ページカーソル。
curl "https://api.millida.net/v2/rating/api/votes?status=VALID&limit=100" \
  -H "X-Api-Key: rsk_live_YOUR_KEY"

レスポンス:

{
  "votes": [
    {
      "id": "clx…",
      "serverId": "srv…",
      "discordId": "123456789012345678",
      "nickname": "Steve",
      "status": "VALID",
      "votedAt": "2026-06-16T10:12:00.000Z"
    }
  ],
  "nextCursor": "eyJ…"
}

次のページを取得するには、cursor に nextCursor を設定してリクエストを繰り返します。nextCursor が null の場合、それ以上のデータはありません。投票者のIPアドレスはAPIを通じて渡されません。

統計

GET /stats はサーバーの集計カウンターを返します。

{
  "serverId": "srv…",
  "validToday": 42,
  "valid24h": 50,
  "valid30d": 1280,
  "totalValid": 9001,
  "totalAll": 9500
}

例: Discordボットが投票に対してロールを付与する

async function hasVotedToday(discordId) {
  const res = await fetch(
    `https://api.millida.net/v2/rating/api/votes/check?discordId=${discordId}&since=today`,
    { headers: { "X-Api-Key": process.env.MILLIDA_RATING_KEY } },
  );
  const data = await res.json();
  return data.voted === true;
}

この関数をDiscordコマンドで呼び出し、プレイヤーが投票していればロールを付与します。

制限事項

  • APIは読み取り専用です。
  • リクエストレートには制限があります。コマンドでの確認には十分すぎるほどです。APIを短い間隔でポーリングしないでください。
  • キーは自分のサーバーの投票のみを参照できます。