Update from Git Manager GUI
This commit is contained in:
71
util/stats.js
Normal file
71
util/stats.js
Normal file
@@ -0,0 +1,71 @@
|
||||
/**
|
||||
* util/stats.js
|
||||
* Verfolgt Bot-Statistiken persistent in ./data/stats.json
|
||||
*/
|
||||
|
||||
import fs from "fs";
|
||||
import path from "path";
|
||||
|
||||
const STATS_FILE = "./data/stats.json";
|
||||
|
||||
const defaults = {
|
||||
updatesFound: 0, // Erkannte Updates gesamt
|
||||
updatesPosted: 0, // Erfolgreich gesendete Update-Embeds
|
||||
checksRun: 0, // Durchgeführte Update-Checks
|
||||
apiErrors: 0, // Spiget-API Fehler
|
||||
dmsSent: 0, // DMs an den Owner gesendet
|
||||
startedAt: null,
|
||||
};
|
||||
|
||||
function load() {
|
||||
try {
|
||||
return JSON.parse(fs.readFileSync(STATS_FILE, "utf8"));
|
||||
} catch {
|
||||
return { ...defaults };
|
||||
}
|
||||
}
|
||||
|
||||
function save(data) {
|
||||
try {
|
||||
fs.mkdirSync(path.dirname(STATS_FILE), { recursive: true });
|
||||
fs.writeFileSync(STATS_FILE, JSON.stringify(data, null, 2));
|
||||
} catch (e) {
|
||||
console.error("[Stats] Fehler beim Speichern:", e.message);
|
||||
}
|
||||
}
|
||||
|
||||
class Stats {
|
||||
constructor() {
|
||||
this._data = load();
|
||||
if (!this._data.startedAt) {
|
||||
this._data.startedAt = new Date().toISOString();
|
||||
save(this._data);
|
||||
}
|
||||
}
|
||||
|
||||
/** Erhöht einen Zähler um 1 und speichert sofort */
|
||||
increment(key, by = 1) {
|
||||
if (key in this._data) {
|
||||
this._data[key] += by;
|
||||
save(this._data);
|
||||
}
|
||||
}
|
||||
|
||||
/** Gibt den aktuellen Wert eines Zählers zurück */
|
||||
get(key) {
|
||||
return this._data[key] ?? 0;
|
||||
}
|
||||
|
||||
/** Gibt alle Statistiken zurück */
|
||||
all() {
|
||||
return { ...this._data };
|
||||
}
|
||||
|
||||
/** Setzt die Startzeit auf jetzt */
|
||||
markStart() {
|
||||
this._data.startedAt = new Date().toISOString();
|
||||
save(this._data);
|
||||
}
|
||||
}
|
||||
|
||||
export default new Stats();
|
||||
Reference in New Issue
Block a user