Compare commits

...

2 commits

Author SHA1 Message Date
c62309c691 opti 2025-11-25 17:06:04 +01:00
6f94ab2260 opti 2025-11-25 17:05:29 +01:00
3 changed files with 1 additions and 160 deletions

3
.gitignore vendored
View file

@ -1,4 +1,3 @@
/node_modules
.env
.gitconfig
db.json
.gitconfig

92
db.js
View file

@ -1,92 +0,0 @@
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;
}

View file

@ -1,66 +0,0 @@
import { Client, GatewayIntentBits, WebhookClient, AuditLogEvent, OAuth2Scopes, Options, Events } from 'discord.js';
import firstDetector from './detectors/allDetector.js';
import 'dotenv/config';
console.log("--- DEBUG ---");
console.log("Test Token:", process.env.DISCORD_TOKEN ? "Présent (Longueur: " + process.env.DISCORD_TOKEN.length + ")" : "ABSENT !");
console.log("Tentative de connexion à Discord.");
const client = new Client({
makeCache: Options.cacheWithLimits({
MessageManager: 0, // le bot ne se souviendra pas des anciens messages (pas de cache)
}),
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
]
});
// Gestion des Messages (Listeners)
// Fonction locale pour traiter un message (remplace newMessageListener)
async function handleMessage(message) {
try {
const reply = await firstDetector.createReply(message);
if (reply) {
await message.reply(reply);
}
} catch (e) {
console.error('Erreur dans le détecteur:', e);
}
}
client.on('messageCreate', async (message) => {
if (message.author.bot) return;
await handleMessage(message);
});
client.on('messageUpdate', async (oldMessage, newMessage) => {
let message = newMessage;
if (message.partial) {
try {
message = await message.fetch();
} catch (e) {
console.error('Error while fetching message', e);
return;
}
}
if (!message.author || message.author.bot) return;
if (oldMessage.content === message.content) return; // Pas de changement de texte
if (!message.content) return;
// on évite de spammer
if (oldMessage.content && oldMessage.content.match(/(\b|^)quoi(\b|$)/i)) {
return;
}
await handleMessage(message);
});
client.on(Events.ClientReady, () => {
console.log(`Hello World !`);
});
client.login(process.env.DISCORD_TOKEN);