89 lines
No EOL
2.3 KiB
JavaScript
89 lines
No EOL
2.3 KiB
JavaScript
import { Client, GatewayIntentBits, WebhookClient, AuditLogEvent, OAuth2Scopes, Options } from 'discord.js';
|
|
// import commands from './commands.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); |