allegement ram

This commit is contained in:
louhane delforge 2025-11-21 09:52:32 +01:00
parent d001872d08
commit 296cf1ccb0
5 changed files with 109 additions and 69 deletions

2
.gitignore vendored
View file

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

View file

@ -1,9 +1,13 @@
# genius-troll
# intro
## genius-troll
réponses troll et fun facts
[to invite](https://discord.com/oauth2/authorize?client_id=1441128583178227883&permissions=8&integration_type=0&scope=bot+applications.commands)
# version
# dev
## version
- 0.1.1 : initialisation et création du code
- 0.2.1 : ajout de modules de détection
@ -12,7 +16,7 @@ réponses troll et fun facts
- 1.0.0 : ca marche via vs code
- 1.1.0 : fix sur lxc
# dependences
## dependences
- npm i
- node index.js
- node index.js

View file

@ -1,25 +1,15 @@
import 'dotenv/config';
import { Client, GatewayIntentBits, WebhookClient, AuditLogEvent, OAuth2Scopes, Options, Events } from 'discord.js';
import { Client, GatewayIntentBits, Options, Events } from 'discord.js';
// Import statique : si ça plante ici (RAM), tu le sauras tout de suite
import firstDetector from './detectors/allDetector.js';
// La variable des détecteurs est déclarée mais pas initialisée (elle le sera dans loadDetectors)
let firstDetector;
// Fonction de chargement asynchrone des modules locaux (pour contourner le blocage d'Alpine)
async function loadDetectors() {
try {
// Import dynamique qui attend la connexion réussie du bot
const detectorModule = await import('./detectors/allDetector.js');
firstDetector = detectorModule.default;
console.log("[STATUS] Détecteurs chargés avec succès. Bot prêt à troller.");
} catch (e) {
console.error("ALERTE: Impossible de charger les détecteurs locaux ! Vérifiez l'arborescence et 'data/index.js'.", e);
}
}
// 1. CLIENT DÉFINITION
const client = new Client({
makeCache: Options.cacheWithLimits({
MessageManager: 0,
MessageManager: 0, // Très bien pour la RAM
// Ajoute ceci pour économiser encore plus :
UserManager: 0,
GuildMemberManager: 0,
ThreadManager: 0,
}),
intents: [
GatewayIntentBits.Guilds,
@ -28,57 +18,21 @@ const client = new Client({
]
});
// -- GESTION DES LOGS GUILD (Non-critique, peut être décommenté) --
// client.on('guildCreate', ...
// client.on('guildDelete', ...
// -- 2. DÉMARRAGE & READY --
client.on(Events.ClientReady, async () => {
client.on(Events.ClientReady, () => {
console.log(`[SUCCESS] Logged in as ${client.user?.tag}`);
console.log('Bot is ready!');
// DÉMARRAGE DU CHARGEMENT DES MODULES LOURDS APRÈS LA CONNEXION
await loadDetectors();
});
// -- 3. GESTION DES MESSAGES (Cœur du bot) --
async function handleMessage(message) {
// Le bot ne répond pas tant que le chargement dynamique n'est pas terminé
if (!firstDetector) return;
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) {
return;
}
}
if (!message.author || message.author.bot) return;
if (oldMessage.content === message.content) return;
if (oldMessage.content && oldMessage.content.match(/(\b|^)quoi(\b|$)/i)) {
return;
try {
const reply = await firstDetector.createReply(message); // Plus besoin de vérifier si firstDetector existe
if (reply) await message.reply(reply);
} catch (e) {
console.error('Erreur détecteur:', e);
}
await handleMessage(message);
});
// 4. CONNEXION FINALE
// ... (Reste du code inchangé)
client.login(process.env.DISCORD_TOKEN);

84
indexFaulty.JS Normal file
View file

@ -0,0 +1,84 @@
import 'dotenv/config';
import { Client, GatewayIntentBits, WebhookClient, AuditLogEvent, OAuth2Scopes, Options, Events } from 'discord.js';
// La variable des détecteurs est déclarée mais pas initialisée (elle le sera dans loadDetectors)
let firstDetector;
// Fonction de chargement asynchrone des modules locaux (pour contourner le blocage d'Alpine)
async function loadDetectors() {
try {
// Import dynamique qui attend la connexion réussie du bot
const detectorModule = await import('./detectors/allDetector.js');
firstDetector = detectorModule.default;
console.log("[STATUS] Détecteurs chargés avec succès. Bot prêt à troller.");
} catch (e) {
console.error("ALERTE: Impossible de charger les détecteurs locaux ! Vérifiez l'arborescence et 'data/index.js'.", e);
}
}
// 1. CLIENT DÉFINITION
const client = new Client({
makeCache: Options.cacheWithLimits({
MessageManager: 0,
}),
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
]
});
// -- GESTION DES LOGS GUILD (Non-critique, peut être décommenté) --
// client.on('guildCreate', ...
// client.on('guildDelete', ...
// -- 2. DÉMARRAGE & READY --
client.on(Events.ClientReady, async () => {
console.log(`[SUCCESS] Logged in as ${client.user?.tag}`);
console.log('Bot is ready!');
// DÉMARRAGE DU CHARGEMENT DES MODULES LOURDS APRÈS LA CONNEXION
await loadDetectors();
});
// -- 3. GESTION DES MESSAGES (Cœur du bot) --
async function handleMessage(message) {
// Le bot ne répond pas tant que le chargement dynamique n'est pas terminé
if (!firstDetector) return;
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) {
return;
}
}
if (!message.author || message.author.bot) return;
if (oldMessage.content === message.content) return;
if (oldMessage.content && oldMessage.content.match(/(\b|^)quoi(\b|$)/i)) {
return;
}
await handleMessage(message);
});
// 4. CONNEXION FINALE
client.login(process.env.DISCORD_TOKEN);

View file

@ -1,2 +0,0 @@
[credential "https://https://dev.ldelforge.com"]
username = TRUkae