Track the invites in your servers to know who invited who and with which invite!
npm install @ssmidge/discord-invites-tracker
# or
yarn add @ssmidge/discord-invites-tracker
const Discord = require('discord.js');
const client = new Discord.Client({
intents: [Discord.GatewayIntentBits.Guilds]
});
const InvitesTracker = require('@ssmidge/discord-invites-tracker');
const tracker = InvitesTracker.init(client, {
fetchGuilds: true,
fetchVanity: true,
fetchAuditLogs: true
});
tracker.on('guildMemberAdd', (member, type, invite) => {
const welcomeChannel = member.guild.channels.cache.find((ch) => ch.name === 'welcome');
if(type === 'normal'){
welcomeChannel.send(`Welcome ${member}! You were invited by ${invite.inviter.username}!`);
}
else if(type === 'vanity'){
welcomeChannel.send(`Welcome ${member}! You joined using a custom invite!`);
}
else if(type === 'permissions'){
welcomeChannel.send(`Welcome ${member}! I can't figure out how you joined because I don't have the "Manage Server" permission!`);
}
else if(type === 'unknown'){
welcomeChannel.send(`Welcome ${member}! I can't figure out how you joined the server...`);
}
});
client.login(process.env.TOKEN);
Different join types available:
normal
- When a member joins using an invite and the package knows who invited the member (invite
is available).vanity
- When a member joins using an invite with a custom URL (for example https://discord.gg/discord-api).permissions
- When a member joins but the bot doesn't have theMANAGE_GUILD
permission.unknown
- When a member joins but the bot doesn't know how they joined.
const InvitesTracker = require('@ssmidge/discord-invites-tracker');
const tracker = InvitesTracker.init(client, {
fetchGuilds: true,
fetchVanity: true,
fetchAuditLogs: true,
// servers that contain "nude" in their name will not be processed
exemptGuild: (guild) => guild.name.includes('nude')
});
const InvitesTracker = require('@androz2091/discord-invites-tracker');
const tracker = InvitesTracker.init(client, {
fetchGuilds: true,
fetchVanity: true,
fetchAuditLogs: true,
// only servers that contain "happy" in their name will be processed
activeGuild: (guild) => guild.name.includes('happy')
});