Skip to main content

.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.

ParameterTypBeschreibung
valuenumberPunkte, die für den Erfolg vergeben werden.
skillIdstringID des Skills, dem der Erfolg zugeordnet wird.
messagestringBeschreibung des Erfolgs.
autoMessagebooleanWenn 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());