66 lines
No EOL
2 KiB
JavaScript
66 lines
No EOL
2 KiB
JavaScript
import 'dotenv/config';
|
||
import fs from 'fs';
|
||
import { Client, GatewayIntentBits, Options, Events, Collection } from 'discord.js';
|
||
import firstDetector from './detectors/allDetector.js';
|
||
|
||
|
||
// --- Configuration Client et Intents ---
|
||
const client = new Client({
|
||
makeCache: Options.cacheWithLimits({
|
||
MessageManager: 5, // opti de RAM mais 0 est trop agressif
|
||
ThreadManager: 0, // peut rester a 0 car peu utilisé
|
||
// UserManager: 0,
|
||
//ThreadManager: 0,
|
||
// commentées pour laisser par défaut, pas d'impact vu la RAM dispo
|
||
|
||
}),
|
||
intents: [
|
||
GatewayIntentBits.Guilds,
|
||
GatewayIntentBits.GuildMessages,
|
||
GatewayIntentBits.MessageContent, // required pour les détecteurs
|
||
]
|
||
});
|
||
|
||
// --- Gestion des Événements ---
|
||
|
||
// 1. login réussi
|
||
client.on(Events.ClientReady, () => {
|
||
console.log(`[SUCCESS] Logged in as ${client.user?.tag}`);
|
||
});
|
||
|
||
// 2. gestion des commandes slash
|
||
client.on(Events.InteractionCreate, async interaction => {
|
||
// check que ça soit bien commande slash
|
||
if (!interaction.isChatInputCommand()) return;
|
||
|
||
const command = client.commands.get(interaction.commandName);
|
||
if (!command) return;
|
||
|
||
try {
|
||
await command.execute(interaction);
|
||
} catch (error) {
|
||
console.error('Erreur exécution commande slash:', error);
|
||
// message d'erreur (si besoin), montré qu'à l'auteur
|
||
if (interaction.replied || interaction.deferred) {
|
||
await interaction.followUp({ content: 'Erreur lors de l’exécution de la commande !', ephemeral: true });
|
||
} else {
|
||
await interaction.reply({ content: 'Erreur lors de l’exécution de la commande !', ephemeral: true });
|
||
}
|
||
}
|
||
});
|
||
|
||
// 3. Gestion des Messages (Détecteurs Passifs)
|
||
client.on('messageCreate', async (message) => {
|
||
if (message.author.bot) return;
|
||
|
||
try {
|
||
const reply = await firstDetector.createReply(message);
|
||
if (reply) await message.reply(reply);
|
||
} catch (e) {
|
||
console.error('Erreur détecteur:', e);
|
||
}
|
||
});
|
||
|
||
|
||
// --- connexion ---
|
||
client.login(process.env.DISCORD_TOKEN); |