Files
LazyBot/app/events/guildCreate.js
T

142 lines
5.8 KiB
JavaScript

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}`);
}
},
};