UNPKG

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
"use strict"; 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;