Docs

Invite Tracking

Who invited whom, counted automatically, with a leaderboard and manual adjustments.

Overview#

Iris watches every invite in the server and works out which one a new member came through. Nobody has to claim a join, and nothing has to be set up: as long as Iris can read the invite list, counting starts the moment it joins.

A count is not one number. Iris separates people who joined and stayed from those who left again, and from accounts too new to be genuine, so an invite contest is judged on real members rather than on a total somebody farmed.

How a count is made up#

SettingTypeDefaultWhat it does
RegularCountedAutomaticMembers who joined through the invite and are still in the server.
LeftSubtractedAutomaticMembers who joined through the invite and have since left.
FakeSubtractedAutomaticJoins from accounts too new to count, which is what stops a throwaway account inflating a total.
BonusManual0Invites granted by staff with .invite-manage addbonus, for anything Iris cannot see.
TotalDerivedAutomaticRegular plus bonus, less those who left and those judged fake.

Custom join and leave messages#

With the join log on, turn on Custom message on the dashboard to post your own text instead of the default log embed. The join and leave messages each take the variables below. Mentions show as names and never ping anyone.

VariableBecomes
{user.mention}The member who joined or left
{user.name}Their username
{user.created_at}When their account was made
{user.joined_at}When they joined the server
{inviter.mention}Who invited them
{inviter.invites}The inviter's total invites
{inviter.regular}, {inviter.bonus}, {inviter.left}, {inviter.fake}The inviter's counts, split up
{invite.code}The invite code used
{invite.uses}How many times it has been used (joins only)
{invite.channel}The channel the invite points to (joins only)
{server}The server name
{server.member_count}Members in the server

Avatar links are {user.avatar_url}, {inviter.avatar_url} and {server.icon_url}. Any number also answers to .ordinal, so {inviter.invites.ordinal} gives 12th. When Iris cannot tell who invited someone, the inviter and invite variables read "Unknown".

Commands#

Anyone#

  • /invites [user] Invite count for you or somebody else, broken down into the five figures above. Anyone

Staff#

  • .invite-manage leaderboard [limit] The members who have invited the most people. limit sets how many places are shown. Anyone
  • .invite-manage inviter <user> Show who invited a given member. Anyone
  • .invite-manage list [user] [role] List the members somebody has invited. Defaults to you, and can be narrowed to those holding one role. Anyone
  • .invite-manage codes [user] Every invite code, with uses and expiry. Anyone
  • .invite-manage addbonus <user> <amount> Grant bonus invites. Manage Server
  • .invite-manage removebonus <user> <amount> Take bonus invites away. Manage Server
  • .invite-manage addinvites <user> <amount> Add to the regular count directly. Manage Server
  • .invite-manage removeinvites <user> <amount> Subtract from the regular count. Manage Server
  • .invite-manage reset <target> Reset counts. target is a member, server to clear every count in the server, or left to zero only the left figures. Manage Server
  • .invite-manage liveboard <channel|off> Post a top 10 leaderboard in a channel that keeps itself up to date, move it by naming another channel, or remove it with off. The same control is on the Leaderboard tab of the dashboard. Manage Server

Permissions#

PermissionWhy Iris needs it
Manage ServerReads the invite list. Without it Iris cannot tell which invite a join came through, and every count stays at zero.
View ChannelsReads the channel commands are run in.
Send MessagesReplies at all.
Embed LinksEvery reply is an embed.

What it looks like#

I
Iris APP Today at 11:21 PM

@member has 38 invites. (44 regular, 5 bonus, 9 left, 2 fake)

An invite count, split into what actually stuck.

Tips and gotchas#

Every count is zero.

Iris is missing Manage Server. That permission is what lets it read the invite list, and nothing can be attributed without it.

A join was not credited to anyone.

It came through a vanity URL, a widget, or an invite created while Iris was offline. Those cannot be matched to an inviter after the fact.

Somebody is inviting alt accounts.

New accounts are counted as fake and do not add to the total. For a harder stop, verification blocks the second account outright.

Can I give a role for reaching a number of invites?

Not automatically. Check .invite-manage leaderboard and hand the role out with /role add.