Member verification

OAuth verification, panels, and restore flows for trusted joins.

/verify alt_detection /verify approve /verify builder /verify deny /verify embed_panel /verify embed_result /verify info /verify log /verify mode /verify preview /verify restore_members /verify review /verify role /verify send /verify vpn_block
15 commands
/verify alt_detection
Verification

Optional (default OFF): if **ON**, a second *different* Discord account verifying from the same client IP fingerprint as an existing verifier is kicked, DM'd (modern embed), and logged. Stores hashed fingerprints only — bot needs **Kick Members**.

/verify alt_detection <enabled>
User: Administrator
Bot: `Kick Members`
/verify approve
Verification

Approve a member pending captcha review and assign the verify role

/verify approve <member>
User: Administrator
Bot: `Manage Roles`
/verify builder
Verification

Open live verify panel builder with instant preview (title, description, color, footer, image, thumbnail, button text)

/verify builder
User: Administrator
/verify deny
Verification

Deny a pending captcha review (no role); logs and DMs when possible

/verify deny <member>
User: Administrator
/verify embed_panel
Verification

Quick-edit verify panel title/description/color (legacy shortcut)

/verify embed_panel <title> <description> [color_hex]
User: Administrator
/verify embed_result
Verification

Customize titles/colors for verification log embeds (verified / fail)

/verify embed_result <which> <title> <color_hex>
User: Administrator
/verify info
Verification

Show verification mode (OAuth vs captcha), review queue, role, log, OAuth URL

/verify info
User: Administrator
/verify log
Verification

Staff channel: one embed per OAuth attempt — **verified** (role outcome + user/device summary) or **failed** (e.g. not in server). Style via `/verify embed_result`.

/verify log [channel]
User: Administrator
Bot: `Send Messages` + `Embed Links` in that channel
/verify mode
Verification

Choose **OAuth** (browser) or **DM captcha** (Pillow-generated image in DMs + modal)

/verify mode
User: Administrator
/verify preview
Verification

Preview the verification panel and success/failure result embed styles

/verify preview
User: Administrator
/verify restore_members
Verification

Restore verified users: tries to rejoin leavers (OAuth guilds.join token required) and re-apply verify role

/verify restore_members
User: Administrator
Bot: `Manage Roles`
/verify review
Verification

Captcha: require staff `/verify approve` or `/verify deny` after correct code (needs `/verify log`)

/verify review <enabled>
User: Administrator
/verify role
Verification

Set the member role granted after successful verification (OAuth or DM captcha)

/verify role <role>
User: Administrator
Bot: `Manage Roles` (role must be below the bot)
/verify send
Verification

Post the panel: OAuth = link button; captcha = **Verify** button (DM image + code, no external CAPTCHA API)

/verify send <channel>
User: Administrator
Bot: `Manage Roles`
/verify vpn_block
Verification

Optional (default OFF): if **ON**, verification checks the visitor IP via ip-api.com (VPN/proxy/datacenter signals). Blocked users see a web message and a fail log embed; no raw IP in Discord. Fails open on API errors; proxy must forward real client IP.

/verify vpn_block <enabled>
User: Administrator
Bot: Outbound HTTP from host