92 lines
No EOL
2.4 KiB
JavaScript
92 lines
No EOL
2.4 KiB
JavaScript
import fs from 'fs';
|
|
|
|
const DB_PATH = './db.json';
|
|
|
|
// Valeurs par défaut
|
|
const settingsDefaultValues = {
|
|
quoiAnswerPercentage: 100,
|
|
quoicoubehAnswerPercentage: 100,
|
|
feurAnswerPercentage: 100,
|
|
mentionAnswerPercentage: 100,
|
|
forcedAnswerRoleId: null,
|
|
ignoredRoleId: null,
|
|
};
|
|
|
|
// Structure de base de la DB en mémoire
|
|
let dbData = {
|
|
ignoredChannels: [], // Liste d'objets { channelId, guildId }
|
|
configs: {} // Objet : guildId -> { settings }
|
|
};
|
|
|
|
// --- Fonctions internes (Sauvegarde/Chargement) ---
|
|
|
|
function loadDb() {
|
|
if (!fs.existsSync(DB_PATH)) {
|
|
saveDb(); // Crée le fichier s'il n'existe pas
|
|
return;
|
|
}
|
|
try {
|
|
const raw = fs.readFileSync(DB_PATH, 'utf-8');
|
|
dbData = JSON.parse(raw);
|
|
|
|
// Sécurité : s'assurer que les structures existent
|
|
if (!dbData.ignoredChannels) dbData.ignoredChannels = [];
|
|
if (!dbData.configs) dbData.configs = {};
|
|
} catch (e) {
|
|
console.error("Erreur lecture DB, réinitialisation :", e);
|
|
saveDb();
|
|
}
|
|
}
|
|
|
|
function saveDb() {
|
|
fs.writeFileSync(DB_PATH, JSON.stringify(dbData, null, 2), 'utf-8');
|
|
}
|
|
|
|
// Initialisation au démarrage
|
|
loadDb();
|
|
|
|
// --- Fonctions exportées (Même signature que l'ancien db.js) ---
|
|
|
|
export function addChannelToIgnoreList(channelId, guildId) {
|
|
// Vérifier si déjà présent
|
|
const exists = dbData.ignoredChannels.some(c => c.channelId === channelId);
|
|
if (!exists) {
|
|
dbData.ignoredChannels.push({ channelId, guildId });
|
|
saveDb();
|
|
}
|
|
}
|
|
|
|
export function getIgnoredChannels(guildId) {
|
|
return dbData.ignoredChannels.filter(c => c.guildId === guildId);
|
|
}
|
|
|
|
export function removeChannelFromIgnoreList(channelId) {
|
|
const initialLength = dbData.ignoredChannels.length;
|
|
dbData.ignoredChannels = dbData.ignoredChannels.filter(c => c.channelId !== channelId);
|
|
|
|
if (dbData.ignoredChannels.length !== initialLength) {
|
|
saveDb();
|
|
}
|
|
}
|
|
|
|
export function setSetting(guildId, setting, value) {
|
|
// Initialiser la config de la guilde si inexistante
|
|
if (!dbData.configs[guildId]) {
|
|
dbData.configs[guildId] = { ...settingsDefaultValues };
|
|
}
|
|
|
|
// Mettre à jour la valeur
|
|
dbData.configs[guildId][setting] = value;
|
|
saveDb();
|
|
}
|
|
|
|
export function getSetting(guildId, setting) {
|
|
const config = dbData.configs[guildId];
|
|
|
|
if (!config) {
|
|
return settingsDefaultValues[setting];
|
|
}
|
|
|
|
const val = config[setting];
|
|
return val === undefined ? settingsDefaultValues[setting] : val;
|
|
} |