import { Client, GatewayIntentBits, WebhookClient, AuditLogEvent, OAuth2Scopes, Options, Events } from 'discord.js'; import firstDetector from './detectors/allDetector.js'; // const webhookClient = process.env.LOGS_WEBHOOK ? new WebhookClient({ url: process.env.LOGS_WEBHOOK }) : null; 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, ] }); // Démarrage client.on('ready', async () => { console.log(`Logged in as ${client.user?.tag ?? 'unknown'}`); webhookClient?.send({ content: `Logged in as ${client.user?.tag ?? 'unknown'}` }); await client.guilds.fetch(); console.log('Bot is ready!'); console.log(client.generateInvite({ scopes: [OAuth2Scopes.Bot], permissions: [ 'SendMessages', 'ViewAuditLog', 'ViewChannel', 'UseApplicationCommands', 'EmbedLinks', 'ReadMessageHistory' ] })); }); // 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; // Si l'ancien message déclenchait déjà un "quoi" (regex simple), 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);