Advertisement
TheBakkeseKing

guildMemberAdd.js

Sep 4th, 2024
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const { EmbedBuilder, WebhookClient } = require("discord.js");
  2. const { query, insert } = require('../../Functions/Metodos/database');
  3.  
  4. const webhook = new WebhookClient({
  5.   url: "",
  6. });
  7.  
  8. module.exports = {
  9.   name: "guildMemberAdd",
  10.   async execute(member) {
  11.  
  12.     // Inicializar la caché de invitaciones si no está definida
  13.     if (!member.client.inviteCache) {
  14.       member.client.inviteCache = new Map();
  15.     }
  16.  
  17.     if (!member.client.inviteCache.has(member.guild.id)) {
  18.       member.client.inviteCache.set(member.guild.id, new Map());
  19.     }
  20.  
  21.     // Obtener la caché de invitaciones antes de la entrada del miembro
  22.     const cachedInvites = member.client.inviteCache.get(member.guild.id);
  23.  
  24.     // Obtener todas las invitaciones actuales del servidor
  25.     const guildInvites = await member.guild.invites.fetch();
  26.  
  27.     // Obtener la invitación utilizada comparando el recuento de usos
  28.     const invite = guildInvites.find(i => cachedInvites.get(i.code) < i.uses);
  29.  
  30.     // Actualizar la caché con las invitaciones actuales
  31.     member.client.inviteCache.set(member.guild.id, new Map(guildInvites.map(inv => [inv.code, inv.uses])));
  32.  
  33.  
  34.     if (invite) {
  35.       const invitacion = invite.code;
  36.  
  37.       try {
  38.         // Recuperar el comercial que creó la invitación
  39.         const [comercial] = await query('Sentencia SQL SELECT', [invitacion]);
  40.         const discordIdInvitador = comercial ? comercial.DiscordIDuser : invite.inviter.id;
  41.  
  42.         // Comprobar si el usuario ya existe en la base de datos
  43.         const results = await query('Sentencia SQL SELECT', [member.id]);
  44.  
  45.         if (results.length > 0) {
  46.           console.log(`El usuario ${member.user.tag} (${member.id}) ya está registrado en la base de datos.`);
  47.         } else {
  48.           // Insertar los datos en la base de datos
  49.           const insertId = await insert('Sentencia SQL INSERT', [member.id, discordIdInvitador, invitacion]);
  50.           console.log('Nuevo registro añadido a la base de datos:', insertId);
  51.         }
  52.  
  53.         // Enviar mensaje de bienvenida en el canal de bienvenida
  54.         const welcomeChannel = member.guild.channels.cache.find(channel => channel.name === "recibidor");
  55.         if (welcomeChannel) {
  56.           welcomeChannel.send(`:green_circle: <@${member.id}> (${member.id}) - Invitado por <@${discordIdInvitador}> (${discordIdInvitador}) -> ${member.guild.memberCount} miembros.`);
  57.         }
  58.  
  59.         console.log(`Nuevo miembro: ${member.user.tag} (${member.id}) se ha unido, Invitación utilizada: ${invitacion} por ${discordIdInvitador}`);
  60.       } catch (error) {
  61.         console.error('Error al interactuar con la base de datos:', error);
  62.       }
  63.     } else {
  64.       console.log(`Nuevo miembro: ${member.user.tag} (${member.id}) se ha unido, pero no se pudo determinar la invitación utilizada.`);
  65.     }
  66.   },
  67. };
  68.  
Tags: BOTDiscord
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement