From f5d4ea062688cd415412d66f2de2dab24785398c Mon Sep 17 00:00:00 2001 From: Arthur Puechberty Date: Mon, 19 Jan 2026 19:04:38 +0100 Subject: [PATCH] =?UTF-8?q?Ajouter=20un=20message=20de=20bienvenue=20et=20?= =?UTF-8?q?un=20DM=20au=20propri=C3=A9taire=20lors=20de=20l'ajout=20du=20b?= =?UTF-8?q?ot=20=C3=A0=20un=20serveur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/events/guildCreate.js | 141 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 app/events/guildCreate.js diff --git a/app/events/guildCreate.js b/app/events/guildCreate.js new file mode 100644 index 0000000..4f77fa9 --- /dev/null +++ b/app/events/guildCreate.js @@ -0,0 +1,141 @@ +const { Events, EmbedBuilder, ChannelType } = require("discord.js"); + +module.exports = { + name: Events.GuildCreate, + async execute(client, guild) { + console.log(`✅ Bot ajouté au serveur: ${guild.name} (${guild.id})`); + + const panelUrl = process.env.URL; + const guildConfigUrl = `${panelUrl}/guild/${guild.id}`; + + // ===== MESSAGE DANS LE SALON PRINCIPAL ===== + try { + // Trouver le meilleur salon pour envoyer le message + let targetChannel = null; + + // 1. Essayer le salon système (où apparaissent les messages de bienvenue Discord) + if (guild.systemChannel && guild.systemChannel.permissionsFor(client.user)?.has(['SendMessages', 'EmbedLinks'])) { + targetChannel = guild.systemChannel; + } + + // 2. Sinon, essayer le salon "général" ou similaire + if (!targetChannel) { + const generalNames = ['général', 'general', 'chat', 'discussion', 'bienvenue', 'welcome', 'lobby']; + targetChannel = guild.channels.cache.find(ch => + ch.type === ChannelType.GuildText && + generalNames.some(name => ch.name.toLowerCase().includes(name)) && + ch.permissionsFor(client.user)?.has(['SendMessages', 'EmbedLinks']) + ); + } + + // 3. Sinon, prendre le premier salon textuel où on peut écrire + if (!targetChannel) { + targetChannel = guild.channels.cache.find(ch => + ch.type === ChannelType.GuildText && + ch.permissionsFor(client.user)?.has(['SendMessages', 'EmbedLinks']) + ); + } + + if (targetChannel) { + const welcomeEmbed = new EmbedBuilder() + .setColor(0x5865F2) + .setTitle("👋 Bonjour ! Je suis LazyBot") + .setDescription( + `Merci de m'avoir ajouté sur **${guild.name}** ! 🎉\n\n` + + `Je suis un bot multifonction qui peut vous aider avec :\n` + + `> 📈 Système de **niveaux** et d'**XP**\n` + + `> 💰 Système d'**économie**\n` + + `> 👋 Messages de **bienvenue/au revoir** personnalisés\n` + + `> 🛡️ Protection **anti-raid**\n` + + `> 📜 **Logs** complets du serveur\n` + + `> 🎭 **Rôles automatiques** et par boutons\n` + + `> 🔊 Salons vocaux **temporaires**\n` + + `> ⏰ Messages **programmés**\n` + + `> Et bien plus encore !` + ) + .addFields( + { + name: "🔧 Configuration", + value: `Configurez-moi facilement via le **panel web** :\n🔗 ${guildConfigUrl}`, + inline: false + }, + { + name: "📖 Commandes", + value: "Utilisez `/help` pour voir toutes mes commandes !", + inline: true + }, + { + name: "❓ Support", + value: "Besoin d'aide ? Contactez le propriétaire du bot.", + inline: true + } + ) + .setThumbnail(client.user.displayAvatarURL({ dynamic: true, size: 256 })) + .setFooter({ text: "LazyBot • Votre assistant Discord", iconURL: client.user.displayAvatarURL() }) + .setTimestamp(); + + await targetChannel.send({ embeds: [welcomeEmbed] }); + console.log(`📨 Message de bienvenue envoyé dans #${targetChannel.name} sur ${guild.name}`); + } + } catch (err) { + console.error(`❌ Erreur envoi message serveur (${guild.name}):`, err.message); + } + + // ===== DM AU PROPRIÉTAIRE ===== + try { + const owner = await guild.fetchOwner(); + + if (owner) { + const dmEmbed = new EmbedBuilder() + .setColor(0x57F287) + .setTitle("🎉 LazyBot a rejoint votre serveur !") + .setDescription( + `Bonjour **${owner.user.username}** !\n\n` + + `Je viens d'être ajouté sur votre serveur **${guild.name}**.\n` + + `Je suis prêt à vous aider avec de nombreuses fonctionnalités !` + ) + .addFields( + { + name: "🔧 Configurez-moi", + value: + `Accédez au **panel de configuration** pour personnaliser toutes mes fonctionnalités :\n\n` + + `🔗 **[Cliquez ici pour configurer](${guildConfigUrl})**\n\n` + + `Ou copiez ce lien : \`${guildConfigUrl}\``, + inline: false + }, + { + name: "⚡ Démarrage rapide", + value: + "**1.** Connectez-vous au panel avec Discord\n" + + "**2.** Sélectionnez votre serveur\n" + + "**3.** Configurez les modules que vous souhaitez\n" + + "**4.** C'est tout ! Les changements sont instantanés", + inline: false + }, + { + name: "📋 Fonctionnalités disponibles", + value: + "• 👋 Messages de bienvenue/au revoir avec images\n" + + "• 📈 Système de niveaux et XP\n" + + "• 💰 Économie virtuelle\n" + + "• 🛡️ Anti-raid et modération\n" + + "• 📜 Logs détaillés\n" + + "• 🎭 Rôles automatiques et par boutons\n" + + "• 🔊 Salons vocaux temporaires\n" + + "• Et plus encore...", + inline: false + } + ) + .setThumbnail(guild.iconURL({ dynamic: true, size: 256 }) || client.user.displayAvatarURL()) + .setFooter({ text: "LazyBot • Ce message est envoyé automatiquement lors de l'ajout du bot", iconURL: client.user.displayAvatarURL() }) + .setTimestamp(); + + await owner.send({ embeds: [dmEmbed] }); + console.log(`📨 DM envoyé au propriétaire ${owner.user.tag} pour ${guild.name}`); + } + } catch (err) { + // Le propriétaire a peut-être désactivé les DMs + console.log(`⚠️ Impossible d'envoyer un DM au propriétaire de ${guild.name}: ${err.message}`); + } + }, +};