Skip to content
Ocena

Vote API

Javni API: preuzmi listu glasova i proveri da li je igrač glasao (preko Discord-a ili nadimka). Pogodno za Discord botove.

Ažurirano 13. oktobar 2026.

API javnih glasova omogućava tvojim integracijama da čitaju glasove servera: da preuzmu listu glasova, provere da li je određeni igrač glasao i pregledaju statistiku. Najčešće se koristi da Discord bot dodeli rang ili nagradu onima koji su glasali.

Pristup je samo za čitanje — ne možeš menjati glasove preko API-ja.

Pribavljanje API ključa

  1. Otvori stranicu svog servera i završi verifikaciju vlasnika.
  2. U podešavanjima servera otvori sekciju „API keys” i klikni na „Create key”.
  3. Kopiraj ključ, koji izgleda kao rsk_live_… — prikazuje se samo jednom. Čuvaj ga kao lozinku.

Ključ možeš ograničiti na jedan server ili ga izdati za sve svoje servere. Kompromitovan ključ opozovi u istoj sekciji i kreiraj novi.

Važno: ne objavljuj ključ u otvorenom kodu, repozitorijumu ili javno dostupnoj konfiguraciji bota. Ako ključ procure, opozovi ga.

Osnovni URL i autorizacija

Osnovni URL: https://api.millida.net/v2/rating/api

Ključ se prosleđuje u zaglavlju X-Api-Key (ili Authorization: Bearer …):

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

Ako je ključ izdat za sve servere zakupca, dodaj parametar serverId u svaki zahtev. Za ključ vezan za jedan server, ovaj parametar možeš izostaviti.

Provera igračevog glasa

Glavni scenario za Discord bot: „da li je ova osoba glasala”. Endpoint je GET /votes/check.

Parametri:

  • discordId ili nickname — koga proveravaš (jedan od njih je obavezan);
  • since — period: today (podrazumevano, od početka dana po UTC) ili broj sati ili dana — 24h, 7d, 30d;
  • serverId — obavezan ako je ključ izdat za sve servere.
curl "https://api.millida.net/v2/rating/api/votes/check?discordId=123456789012345678&since=today" \
  -H "X-Api-Key: rsk_live_YOUR_KEY"

Odgovor:

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

Ako je voted true, igrač je dao uračunat glas za izabrani period. Računaju se samo važeći glasovi (botovanje i odbijeni glasovi se ne računaju.)

O proveri preko Discord-a: glas se povezuje sa Discord nalogom samo ako ga je igrač naveo u svom Millida profilu. Ako neki igrači nemaju povezan Discord, proveravaj preko nickname ili zamoli igrače da povežu Discord u profilu.

Lista glasova

GET /votes vraća glasove servera od najnovijeg ka najstarijem.

Parametri (svi opcionalni):

  • status — VALID, HELD, REJECTED_FRAUD, REJECTED_RATE_LIMIT, REJECTED_NO_PLAY_HISTORY ili ALL (podrazumevano se vraćaju svi);
  • discordId, nickname — filter po igraču;
  • from, to — opseg datuma u ISO formatu;
  • limit — koliko da se vrati (1–200, podrazumevano 50);
  • cursor — kursor sledeće stranice iz polja nextCursor.
curl "https://api.millida.net/v2/rating/api/votes?status=VALID&limit=100" \
  -H "X-Api-Key: rsk_live_YOUR_KEY"

Odgovor:

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

Da dobiješ sledeću stranicu, ponovi zahtev sa cursor postavljenim na nextCursor. Kada je nextCursor null, nema više podataka. IP adrese glasača se ne prosleđuju kroz API.

Statistika

GET /stats vraća zbirne brojače za server:

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

Primer: Discord bot dodeljuje rolu za glasanje

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;
}

Pozovi ovu funkciju Discord komandom i dodeli rolu ako je igrač glasao.

Ograničenja

  • API je samo za čitanje.
  • Brzina zahteva je ograničena — to je više nego dovoljno za proveru na komandu. Ne anketiraj API u uskoj petlji.
  • Ključ vidi samo glasove sa tvojih servera.