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);