Overview#
Verification holds new members behind one button. They press Verify, Iris issues them a private one-time link, and the verified role is granted the moment they pass. Everything else in the server stays closed until then.
The web step is what makes it more than a button press. While a member is on the verification page Iris records a browser fingerprint alongside their address and a cookie, then matches it against everyone who verified before. A returning ban evader is flagged as an alt rather than quietly let back in. A fingerprint on its own never triggers a flag, since two people on the same phone model and OS version look alike; it has to line up with the address or the cookie.
The same step checks the address itself. Block VPNs and Proxies refuses anyone verifying from a VPN, proxy or hosting exit, since hiding behind one is the usual way an alt gets past fingerprint matching in the first place.
Every pass, failure and detection is written to the log channel, and the recent ones are listed under Detections and Statistics on the dashboard.
Setup#
- Lock the server down first: deny View Channels to
@everyoneeverywhere except the verification channel. - Create the role members get on passing, and drag
Irisabove it in Server Settings > Roles. - Open the dashboard, go to Community > Verification, and turn the module on.
- Set Verification Channel, Verified Role and Log Channel.
- Style the panel under Embed Appearance, then save.
- Press Deploy to post the panel in the channel.
Settings#
/verify, an automatic DM on join, or disabled to skip the web checks entirely.0 allows any age.Commands#
Permissions#
What it looks like#
Tips and gotchas#
Members say they never got the link.
Their DMs are closed. Leave Notify When DMs Closed on so they are told in the channel, and point them at /verify, which replies privately.
The panel disappeared.
Press Deploy again. It posts a fresh panel, and the old message can be deleted.
VPN blocking is on, but people on a VPN still get through.
The check needs an IP intelligence key. Iris uses proxycheck.io, and until PROXYCHECK_API_KEY is set on the host the check does nothing at all, so nobody is blocked by a lookup that could not run. If you are self-hosting, add the key and restart. Note also that the address has to be trustworthy in the first place: behind a reverse proxy without TRUST_PROXY=1, every visitor looks like the proxy and the check is skipped.
A real member says they cannot verify.
Ask whether they have a VPN running, since plenty of people leave one on permanently. They can turn it off and press the link again, or you can let them through with /manverify <member>.
Should the scope be local or global?
Local for a normal server. Global only if you run several servers that share a ban problem, since it matches against every server Iris protects.
Can I verify someone myself?
Yes. /manverify <member> grants the role directly and records who did it.