Lobby Bots API
Fragt ab, was die Bots in den Lobbys sehen: zum Beispiel den Ping eines Spielers aus der Tab-Liste.
Schnellstart: in einem anderen Projekt anzeigen
1. Im Dashboard unter „Discord & API“ einen Schlüssel erzeugen. 2. Diesen Code in dein Projekt kopieren und DEIN_SCHLÜSSEL ersetzen. Das funktioniert direkt im Browser (CORS ist freigegeben) und genauso in Node.js.
const API = 'http://127.0.0.1:8421/v1';
const KEY = 'DEIN_SCHLÜSSEL';
async function lobbyBots(path) {
const res = await fetch(API + path, { headers: { 'x-api-key': KEY } });
const data = await res.json();
if (!res.ok) throw new Error(data.message);
return data;
}
// Ping eines Spielers
const p = await lobbyBots('/ping/Notch');
console.log(`${p.name}: ${p.ping} ms in Lobby ${p.lobby}`);
// Die 20 zuletzt gesehenen Spieler, die gerade online sind
const { players } = await lobbyBots('/pings?online=1&limit=20');
for (const s of players) console.log(s.name, s.ping + ' ms');
// Ping-Verlauf (z. B. für ein Diagramm)
const { history } = await lobbyBots('/ping/Notch/history');
// [{ "time": 1793700000, "ping": 45 }, ...]
Zeiten sind Unix-Sekunden: new Date(time * 1000) macht daraus ein Datum.
Grundlagen
Basis-Adresse: http://127.0.0.1:8421 (nur von diesem Computer erreichbar)
Anmeldung: Im Dashboard unter „Discord & API“ einen Schlüssel erzeugen. Er wird entweder als Header oder als Parameter mitgeschickt:
x-api-key: DEIN_SCHLÜSSEL GET /v1/ping/Notch?key=DEIN_SCHLÜSSEL
Voraussetzung: Das Dashboard muss entsperrt sein, sonst antwortet die API mit 503 locked.
Antworten: immer JSON. Fehler haben die Form {"error": "code", "message": "Text"}.
Daten: Die Bots kennen nur Spieler, die sie in der Tab-Liste einer Lobby gesehen haben, in der gerade ein Bot sitzt. Der Ping ist der Wert aus der Tab-Liste, kein eigener Messwert.
Endpunkte
GET /v1/ping/{name}
Ping eines Spielers.
curl -H "x-api-key: DEIN_SCHLÜSSEL" http://127.0.0.1:8421/v1/ping/Notch
{
"name": "Notch",
"ping": 45,
"online": true,
"lobby": 7,
"last_seen": 1793654270,
"age_seconds": 3
}
| Feld | Bedeutung |
|---|---|
ping | Ping in Millisekunden laut Tab-Liste (letzter bekannter Wert) |
online | true, wenn der Spieler gerade in einer Lobby mit Bot ist |
lobby | BedWars-Lobby-Nummer, in der er zuletzt gesehen wurde |
last_seen | Unix-Zeit in Sekunden |
age_seconds | Sekunden seit der letzten Sichtung |
GET /v1/ping/{name}/history
Die letzten bis zu 30 Ping-Werte eines Spielers, älteste zuerst. Ein neuer Wert wird gespeichert, wenn sich der Ping um mindestens 10 ms ändert oder 5 Minuten seit dem letzten vergangen sind.
{
"name": "Notch",
"ping": 52,
"history": [ { "time": 1793700000, "ping": 45 }, { "time": 1793700300, "ping": 52 } ]
}
GET /v1/pings
Zuletzt gesehene Spieler mit Ping, neueste zuerst.
| Parameter | Bedeutung |
|---|---|
limit | Wie viele (Standard 100, höchstens 1000) |
since | Nur Sichtungen ab dieser Unix-Zeit |
online=1 | Nur Spieler, die gerade in einer Lobby mit Bot sind |
GET /v1/pings?online=1&limit=2
{
"count": 2,
"players": [
{ "name": "Notch", "ping": 45, "online": true, "lobby": 7, "last_seen": 1793700300, "age_seconds": 1 },
{ "name": "Steve", "ping": 88, "online": true, "lobby": 3, "last_seen": 1793700299, "age_seconds": 2 }
]
}
GET /v1/player/{name}
Wie ping, dazu uuid und tracked (steht der Spieler auf der Tracker-Liste?).
GET /v1/lobbies
Lobbys, in denen gerade ein Bot online ist, mit Spielerzahl.
{ "lobbies": [ { "bot": "MeinBot", "lobby": 7, "lobbyname": "bedwarslobby7", "players": 34 } ] }
GET /v1/tracked
Alle Spieler der Tracker-Liste mit Notiz und letzter Sichtung (seen ist null, wenn noch nie gesehen).
Fehlercodes
| Status | Code | Bedeutung |
|---|---|---|
| 400 | bad_name | Kein gültiger Minecraft-Name (1–16 Zeichen: Buchstaben, Zahlen, _) |
| 401 | bad_key | Schlüssel fehlt oder ist falsch |
| 404 | not_seen | Die Bots haben den Spieler noch nicht gesehen |
| 503 | locked | Dashboard ist gesperrt |
| 503 | no_key | Es wurde noch kein API-Schlüssel erzeugt |
Speicherung
Alle Pings liegen platzsparend in data/pings.txt, eine Zeile pro Spieler, alle 30 Sekunden gespeichert:
Notch 069a79f444e94726a5befca90e38aaf5 7 1793700300 52 300:45,0:52
Name, UUID ohne Striche, Lobby, zuletzt gesehen (Unix-Zeit), letzter Ping, dann der Verlauf als Sekunden-vorher:Ping.
Maschinenlesbar
Die Beschreibung im OpenAPI-Format: /openapi.json