const inviteSchema = require('./Schemas.js/inviteSchema'); const { Events } = require("discord.js"); const invites = new Collection(); const wait = require("timers/promises").setTimeout; client.on('ready', async () => { await wait(2000); client.guilds.cache.forEach(async (guild) => { const clientMember = guild.members.cache.get(client.user.id); if (!clientMember.permissions.has(PermissionsBitField.Flags.ManageGuild)) return; const firstInvites = await guild.invites.fetch().catch(err => {console.log(err)}); invites.set(guild.id, new Collection(firstInvites.map((invite) => [invite.code, invite.uses]))); }) }) client.on(Events.GuildMemberAdd, async (member) => { console.log("New member joined:", member.user.tag); const Data = await inviteSchema.findOne({ Guild: member.guild.id}); if (!Data) return; const channelID = Data.Channel; const channel = await member.guild.channels.cache.get(channelID).fetch(); const newInvites = await member.guild.invites.fetch(); const oldInvites = invites.get(member.guild.id); const invite = newInvites.find(i => i.uses > oldInvites.get(i.code)); const inviter = invite ? await client.users.fetch(invite.inviter.id) : null; channel.send(`${member.user.tag} joined the server using the invite code ${invite.code} from ${inviter ? inviter.tag : "an unknown user"}. The invite was used ${invite.uses} times.`); invites.set(member.guild.id, newInvites.reduce((coll, invite) => coll.set(invite.code, invite.uses), new Collection())); }); } catch (error) { console.error(error); }