.SCORE
Mit dem ScoreService (RAGAI.SCORE) kannst du eine Punkte- und Achievement-Logik in deinem Bot umsetzen. Der Service bietet Methoden zum Setzen, Erhöhen, Verringern und Zurücksetzen von Punkteständen sowie ein Achievement-System zum Archivieren von Erfolgen. Über die db()-Funktion kannst du mehrere unabhängige Score-Instanzen verwalten.
Methoden
.get()
Gibt den aktuellen Punktestand zurück.
const punkte = RAGAI.SCORE.get();
console.log('Aktueller Score:', punkte); // z. B. 42
.set(value)
Setzt den Punktestand auf den angegebenen Wert.
RAGAI.SCORE.set(100);
.add(value)
Erhöht den aktuellen Punktestand um den angegebenen Wert.
RAGAI.SCORE.add(10); // Score += 10
.sub(value)
Verringert den aktuellen Punktestand um den angegebenen Wert.
RAGAI.SCORE.sub(5); // Score -= 5
.reset()
Setzt den Punktestand auf 0 zurück.
RAGAI.SCORE.reset();
.achieve(value, skillId, message, autoMessage?)
Archiviert einen Erfolg (Achievement). Du vergibst Punkte, ordnest den Erfolg einem Skill zu und hinterlegst eine Nachricht. Mit autoMessage = true wird die Nachricht automatisch im Chat angezeigt.
| Parameter | Typ | Beschreibung |
|---|---|---|
value | number | Punkte, die für den Erfolg vergeben werden. |
skillId | string | ID des Skills, dem der Erfolg zugeordnet wird. |
message | string | Beschreibung des Erfolgs. |
autoMessage | boolean | Wenn true, wird die Nachricht automatisch im Chat ausgegeben. |
RAGAI.SCORE.achieve(10, 'skill-quiz-1', 'Frage 1 richtig beantwortet!', true);
.getAchieveMents(asJson?)
Gibt alle bisher archivierten Achievements zurück. Mit asJson = true erhältst du ein JSON-Array, andernfalls eine textuelle Darstellung.
// Als JSON-Array
const achievements = RAGAI.SCORE.getAchieveMents(true);
console.log(achievements);
// [{ value: 10, skillId: 'skill-quiz-1', message: 'Frage 1 richtig beantwortet!' }, ...]
// Als Text
const text = RAGAI.SCORE.getAchieveMents(false);
console.log(text);
.waitForInitials()
Wartet, bis die initialen Score-Daten vom Backend geladen wurden. Rufe diese Methode auf, bevor du auf Score-Werte zugreifst, um sicherzustellen, dass die Daten verfügbar sind.
await RAGAI.SCORE.waitForInitials();
const punkte = RAGAI.SCORE.get();
Benannte Score-Instanzen mit .db(scoreName)
Mit db() kannst du separate, benannte Score-Instanzen erstellen und verwalten. Jede Instanz hat dieselben Methoden wie der Haupt-Score. Das ist nützlich, wenn du mehrere unabhängige Punktestände verfolgen möchtest – z. B. pro Kategorie, pro Level oder pro Themenbereich.
.db(scoreName).get()
const quizScore = RAGAI.SCORE.db('quiz').get();
console.log('Quiz-Score:', quizScore);
.db(scoreName).set(value)
RAGAI.SCORE.db('quiz').set(50);
.db(scoreName).add(value)
RAGAI.SCORE.db('quiz').add(10);
.db(scoreName).sub(value)
RAGAI.SCORE.db('quiz').sub(3);
.db(scoreName).reset()
RAGAI.SCORE.db('quiz').reset();
.db(scoreName).achieve(value, skillId, message, autoMessage?)
RAGAI.SCORE.db('quiz').achieve(5, 'skill-quiz-bonus', 'Bonusfrage gelöst!', true);
.db(scoreName).getAchieveMents(asJson?)
const quizAchievements = RAGAI.SCORE.db('quiz').getAchieveMents(true);
console.log(quizAchievements);
Beispiel: Quiz mit mehreren Score-Kategorien
// Initiale Daten abwarten
await RAGAI.SCORE.waitForInitials();
// Haupt-Score zurücksetzen
RAGAI.SCORE.reset();
// Kategorie-Scores anlegen und verwenden
RAGAI.SCORE.db('wissen').reset();
RAGAI.SCORE.db('schnelligkeit').reset();
// Punkte vergeben
RAGAI.SCORE.db('wissen').add(10);
RAGAI.SCORE.db('wissen').achieve(10, 'skill-frage-1', 'Wissensfrage korrekt');
RAGAI.SCORE.db('schnelligkeit').add(5);
RAGAI.SCORE.db('schnelligkeit').achieve(5, 'skill-frage-1', 'Schnell geantwortet!');
// Gesamtscore berechnen
const gesamt = RAGAI.SCORE.db('wissen').get() + RAGAI.SCORE.db('schnelligkeit').get();
RAGAI.SCORE.set(gesamt);
console.log('Gesamtpunkte:', RAGAI.SCORE.get());