Navigation
Captcha Verification
Complete guide to protecting joins with Turnstile
Captcha rules let you post a verification message with a Verify button. Members follow that button to a Flake-hosted page, complete Cloudflare Turnstile, and then receive the roles, permissions, or messages configured in your verification flow.
Overview
How Captcha Works
A captcha rule connects a dashboard-configured verification prompt to a hosted verification page. The prompt is posted in the channel you choose and includes a Verify button. After a member completes Turnstile, Flake runs the success actions for that rule.
Posted in the selected channel with a Verify button
Success actions run after the token is validated
Hosted Verification Page
Members click a Verify button and complete Cloudflare Turnstile on a Flake-hosted page
Custom Verification Message
Configure the channel, message copy, and button prompt from the dashboard
Persistent or Per-User Prompts
Use one persistent verification post or send a separate request when each member joins
Join, Verify, Timeout Stages
Run different actions before verification, after success, or when a request expires
Role and Permission Control
Limit access before verification and restore the right roles or permissions after success
Automatic Cleanup
Optionally remove verification request messages after successful verification
Setup Guide
- Open the server dashboard and select Captcha
- Create a new captcha rule
- Give the rule a clear name so moderators know what it controls
- Keep the rule disabled until the message and flow actions are ready
Ready to configure captcha?
Open your server dashboard and create a captcha rule from the Captcha section.
Verification Flow
Before Verification
Runs as soon as a member joins and a verification request is created.
Use this stage to prepare the member and limit access.
- Post verification instructions
- Assign a waiting-room role
- Limit Telegram permissions
After Turnstile Passes
Runs after the member logs in, completes Turnstile, and Flake validates the token.
Use this stage to restore normal access.
- Grant the member role
- Revoke a restricted role
- Send a welcome or next-step message
When Verification Expires
Runs when the timeout duration passes before the member completes verification.
Use this stage to avoid leaving members in an undefined state.
- Kick inactive members
- Post a final notice
- Keep restricted permissions active
Actions
Available Captcha Actions
Action availability changes by platform and flow stage. Discord rules use roles, while Telegram rules use permissions.
Post Message
Send a templated message during a verification flow stage.
Post "Thanks for verifying" in the verification channelGrant Role
Assign Discord roles when a member reaches a stage.
Grant the Member role after successful verificationRevoke Role
Remove Discord roles that were used as temporary limits.
Remove the Unverified role after successGrant Permissions
Restore Telegram permissions for verified users.
Allow sending messages after verificationRevoke Permissions
Temporarily limit Telegram permissions before verification.
Prevent posting until Turnstile is completedKick or Ban
Remove members who should not remain in the server after timeout or failure handling.
Kick a member when verification times outCommon Use Cases
Discord Waiting Room
Place new Discord members in a restricted role until they verify.
Setup Pattern
- Post the verification prompt in a welcome or verify channel
- On Join, grant an Unverified role
- On Verified, revoke Unverified and grant Member
- On Timeout, kick the member or leave the restriction in place
Outcome: New members can see the verification instructions but cannot access the full server until they pass Turnstile.
Telegram Permission Gate
Limit a Telegram user until they complete the hosted verification flow.
Setup Pattern
- Send a per-user verification message on join
- On Join, revoke message permissions
- On Verified, grant message permissions back
- On Timeout, keep permissions limited or kick the user
Outcome: Spam accounts cannot post freely while legitimate members can regain access after verification.
Persistent Verify Channel
Use one long-lived message so members always know where to verify.
Setup Pattern
- Enable Persistent Message in the verification message card
- Write a short prompt that explains the Verify button
- Use On Verified actions to grant normal access
- Use a timeout when old verification requests should expire
Outcome: Moderators maintain a clean verification channel without reposting instructions for every member.
Troubleshooting
What does the Verify button do?
The button opens a Flake-hosted verification page for the captcha rule. The member logs in for the platform, completes Cloudflare Turnstile, and Flake runs the On Verified actions after the token is accepted.
Should I use a persistent message or per-user messages?
Use a persistent message when you want one stable verification prompt in a dedicated channel. Use per-user messages when each joining member should receive their own request and optional cleanup delay.
Why are some action types unavailable?
Available actions depend on the platform and the flow stage. Discord rules use roles for access patterns, while Telegram rules use permissions.
My timeout actions are not running
Check that the rule has a timeout duration, the rule is enabled, and the bot has permission to perform every configured timeout action.
The verification message does not appear
Confirm the verification channel is selected, the captcha rule is enabled, the server is active, and the Flake bot can post messages with buttons in that channel.
Still having issues?
If you're experiencing problems not covered here, our support team is ready to help.