invite tracking counts who invited each member and, more usefully, what happened to them after. two hundred invited and all of them gone is worse than thirty who stayed, so drain splits every count instead of handing you one number.

setting it up

it’s off until a manager turns it on, and it only works in a server. drain needs manage server itself to read the server’s invites.
open the dashboard, pick your server and go to invites. switch on invite tracking and pick a channel to log joins in, if you want one. under what counts you can change how young an account counts as fake and how long somebody stays before they count as kept, both seven days to start. role rewards hands out up to 25 roles, by people kept or by everybody brought in, and where invites go labels each invite.

what a join counts as

seven days is where both start; the dashboard can move either. a member who left is shown as left whatever else was true of them, so nobody is credited for somebody who’s gone. the leaderboard ranks on kept, and a milestone role goes by kept too.

who gets the credit

discord never tells a bot which invite somebody used. drain keeps the use count of every invite and, when somebody joins, looks for the one that went up. it also credits an invite that was used up on that join, and the server’s own vanity link. when it can’t tell, it says so. two invites moving at the same moment, or a join through discovery or the server guide that carries no invite, is logged as one drain could not attribute. drain never picks a name to fill the gap.

labels

,invites tag takes the code or the full link, and a label up to 40 characters. ,invites sources then shows which labels bring members, with the joins that came through an unlabelled invite counted as one line at the end. it answers the question a per-person count can’t: which channel is working.

milestone roles

a role has to be below drain’s highest role to be handed out. drain checks a person’s milestones when one of their invites brings in a new member, so the role lands on that join rather than the moment their count ticks over.

every command