opti
This commit is contained in:
commit
c62309c691
4 changed files with 115 additions and 70 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -1,4 +1,3 @@
|
||||||
/node_modules
|
/node_modules
|
||||||
.env
|
.env
|
||||||
.gitconfig
|
.gitconfig
|
||||||
db.json
|
|
||||||
20
README.md
20
README.md
|
|
@ -1,14 +1,22 @@
|
||||||
# genius-troll
|
# intro
|
||||||
|
|
||||||
|
## genius-troll
|
||||||
|
|
||||||
réponses troll et fun facts
|
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
|
[to invite](https://discord.com/oauth2/authorize?client_id=1441128583178227883&permissions=8&integration_type=0&scope=bot+applications.commands)
|
||||||
|
|
||||||
# dépendances
|
# dev
|
||||||
bun add fr-compromise conjugation-fr discord.js
|
|
||||||
|
|
||||||
|
## version
|
||||||
|
|
||||||
# version
|
|
||||||
- 0.1.1 : initialisation et création du code
|
- 0.1.1 : initialisation et création du code
|
||||||
- 0.2.1 : ajout de modules de détection
|
- 0.2.1 : ajout de modules de détection
|
||||||
- 0.2.2 : rajout de nouveaux comportement (détection d'un feur par quelqu'un d'autre, ...)
|
- 0.2.2 : rajout de nouveaux comportement (détection d'un feur par quelqu'un d'autre, ...)
|
||||||
- 0.3.1 : ajout de db (retention de setting) et maj des dependences
|
- 0.3.1 : ajout de db (retention de setting) et maj des dependences
|
||||||
- 1.0.0 : ca marche
|
- 1.0.0 : ca marche via vs code
|
||||||
|
- 1.1.0 : fix sur lxc
|
||||||
|
|
||||||
|
## dependences
|
||||||
|
|
||||||
|
- npm i
|
||||||
|
- node index.js
|
||||||
|
|
|
||||||
78
index.js
78
index.js
|
|
@ -1,25 +1,15 @@
|
||||||
import 'dotenv/config';
|
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({
|
const client = new Client({
|
||||||
makeCache: Options.cacheWithLimits({
|
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: [
|
intents: [
|
||||||
GatewayIntentBits.Guilds,
|
GatewayIntentBits.Guilds,
|
||||||
|
|
@ -28,57 +18,21 @@ const client = new Client({
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
|
|
||||||
// -- GESTION DES LOGS GUILD (Non-critique, peut être décommenté) --
|
client.on(Events.ClientReady, () => {
|
||||||
// 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(`[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) => {
|
client.on('messageCreate', async (message) => {
|
||||||
if (message.author.bot) return;
|
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)) {
|
try {
|
||||||
return;
|
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);
|
client.login(process.env.DISCORD_TOKEN);
|
||||||
84
indexFaulty.JS
Normal file
84
indexFaulty.JS
Normal 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);
|
||||||
Loading…
Add table
Add a link
Reference in a new issue