//Captcha

Captcha Verification

Complete guide to protecting joins with Turnstile

Core Feature
Discord
Telegram
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.

Verification Message

Posted in the selected channel with a Verify button

Hosted Page
Turnstile Verification

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

On Join

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
On Verified

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
On Timeout

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 channel

Grant Role

Assign Discord roles when a member reaches a stage.

Grant the Member role after successful verification

Revoke Role

Remove Discord roles that were used as temporary limits.

Remove the Unverified role after success

Grant Permissions

Restore Telegram permissions for verified users.

Allow sending messages after verification

Revoke Permissions

Temporarily limit Telegram permissions before verification.

Prevent posting until Turnstile is completed

Kick or Ban

Remove members who should not remain in the server after timeout or failure handling.

Kick a member when verification times out

Common 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.