invitron
Version:
A powerful Discord.js invite tracker with persistent storage, member analytics, vanity URL support, and comprehensive join monitoring system for Discord bots.
54 lines (53 loc) • 2.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.InvitesTracker = void 0;
const events_1 = require("events");
const InviteTracker_1 = require("./InviteTracker");
class InvitesTracker extends events_1.EventEmitter {
constructor(tracker) {
super();
this.tracker = tracker;
}
static init(client, options = {}) {
const tracker = new InviteTracker_1.InviteTracker(client, options);
const wrapper = new InvitesTracker(tracker);
// Event listener for when a member joins a guild
client.on("guildMemberAdd", async (member) => {
const data = await tracker.handleMemberJoin(member, options);
if (data)
wrapper.emit("guildMemberAdd", member, data);
});
// Event listener for when a member leaves a guild
client.on("guildMemberRemove", (member) => {
tracker["handleMemberLeave"](member); // Deducts data and saves changes
wrapper.emit("guildMemberRemove", member); // Allows external listeners to respond to the event
});
// Event listener for when a new invite is created
client.on("inviteCreate", (invite) => {
wrapper.emit("inviteCreate", invite);
});
// Event listener for when an invite is deleted
client.on("inviteDelete", (invite) => {
wrapper.emit("inviteDelete", invite);
});
return wrapper;
}
// Retrieves all invites for a specific user in a guild
getInvites(guildId, userId) {
return this.tracker.getUserInvites(guildId, userId);
}
// Resets all invite data for a guild
resetGuild(guildId) {
this.tracker.resetGuild(guildId);
}
// Retrieves the top inviter in a guild
getTopInviter(guildId) {
return this.tracker.getTopInviter(guildId);
}
// Retrieves the leaderboard for a guild, limited by the specified number
getLeaderboard(guildId, limit = 10) {
return this.tracker.getLeaderboard(guildId, limit);
}
}
exports.InvitesTracker = InvitesTracker;
exports.default = InvitesTracker;