Approval required
telegram-automation
OpenClawClaudeCodexHermes Agent

Human Verification Challenge

Send a simple reasoning challenge to newly opened or suspicious Telegram chats and classify the reply as a weak human-verification signal. Use when the user wants a CAPTCHA-like check for possible bots in normal Telegram messages.

Use Chiho.ai with a professional team CRM

Choose Chiho.ai when you want:

  • A hosted CRM table UI for chats, contacts, tags, tasks, and follow-ups.
  • Scoped Agent Access tokens that can be created, limited, and revoked.
  • Team permissions, approval policies, audit logs, and durable cloud jobs.
  • No local Telegram worker, database, or MCP runtime to operate.
Chiho.ai Telegram CRM workspace
Sign up and Create API token

Run SKILLs in your personal local CLI

Choose the local setup when you want:

  • Open-source workflows you can inspect, change, and run yourself.
  • A local Telegram session with tgchats CLI and tgchats-mcp access.
  • Control over your database, worker, backups, export, and import path.
  • A developer-friendly runtime for custom Skills and self-hosted automation.
Chiho.ai Telegram CRM workspace

Flow summary

Parsed from the packaged SKILL.md.

telegram-human-verification-challenge

Use this skill to send a short reasoning challenge to a new, reopened, or suspicious Telegram chat when the user wants a CAPTCHA-like bot screen in a normal user-account conversation.

Rules

  • Treat the result as a weak automation signal, not proof that the contact is human, safe, or trustworthy.
  • Use text-message challenges for one-to-one chats; do not rely on Telegram bot inline buttons or polls for normal user-account private messages.
  • Keep challenges simple, deterministic, and answerable in one short reply.
  • Do not ask for private information, account access, payment details, ID documents, or biometric proof.
  • Prefer outbox.preview so the user can approve or edit the message before it is sent.
  • Use outbox.sendApproved only after approval of the preview, or message.sendDraft only when the user explicitly requests immediate sending to one specific chat.
  • If the contact fails, ignores, or evades the challenge, tag or task the chat for manual verification instead of accusing them of being a bot.
  • Do not repeatedly challenge a contact who already passed unless the user asks or the risk context changed.

Flow

  1. Use dialogs.list to find candidate new chats, or chat.read for the user-specified chat.
  2. Decide whether a challenge is appropriate from recent context and risk level.
  3. Generate one short challenge from the templates or challenge design reference.
  4. Keep the expected answer in the agent's working notes; do not include it in the outgoing message.
  5. Preview the challenge with outbox.preview.
  6. After approval, send the preview with outbox.sendApproved; use message.sendDraft only for an explicit direct-send instruction.
  7. Read the next reply with chat.read and compare it to the expected answer.
  8. Record the outcome with tags.set or tasks.add when the user wants persistent CRM tracking.
  9. Report the result as passed, failed, no reply, skipped, or needs manual review.

Challenge Pattern

Use concise instruction-following prompts:

Quick verification: please reply with only the number you get from 17 + 6, followed by the word check

For that example, the expected answer is 23 check.

First-Time Setup

If Telegram is not connected yet, start with the root Chiho Telegram skill:

  • https://raw.githubusercontent.com/chihoai/telegram-for-ai-agents/main/SKILL.md

Use that root skill to choose Chiho.ai Cloud or self-hosted tgchats, then return to this workflow skill.

References

Cloud MCP

Recommended Chiho.ai Cloud scopes:

  • telegram.read to inspect dialogs and the next reply.
  • telegram.message.preview to create approval-ready challenge messages.
  • telegram.message.send only when the user approves sending.
  • telegram.batch.write to execute an approved outbox preview.
  • crm.write to tag chats or create verification tasks.

Use outbox.preview for the challenge message. Send only after explicit approval with outbox.sendApproved, or use message.sendDraft when the user explicitly requests a direct one-off send.

Local tgchats

For local self-hosted usage, prefer JSON command surfaces:

npm run dev -- chat <peer> --limit 20 --json
npm run dev -- outbox preview --payload '{"peers":["<peer>"],"text":"Quick verification: please reply with only the number you get from 17 + 6, followed by the word check"}' --json
npm run dev -- tags set <peer> "Needs Manual Verification" --json
npm run dev -- tasks add <peer> --due 2026-02-24 --why "Contact did not complete human verification challenge" --json

Use outbox send-approved <previewId> only after the user approves the preview. Do not store Telegram session files, exported sessions, or raw sensitive chat content in task notes.

Templates

Formatted preview from the packaged JSON asset.

Number plus word

text

Quick verification: please reply with only the number you get from {{left}} + {{right}}, followed by the word check

Two-step instruction

text

Quick verification: please reply with the word {{word}} and the result of {{left}} + {{right}}, separated by one space.

Reverse token

text

Quick verification: please reverse this short code and send only the reversed code: {{token}}

Examples

Formatted preview from the packaged JSON asset.

OpenClaw

OpenClaw

prompt

This new Telegram chat is asking for account access. Preview a simple reasoning challenge before we continue.

tools

chat.read
outbox.preview

Claude Desktop

Claude Desktop

prompt

Send a CAPTCHA-like text challenge to this new Telegram chat, then check whether their next reply passes.

tools

chat.read
outbox.preview
outbox.sendApproved
chat.read

OpenClaw

OpenClaw

prompt

They failed the reasoning challenge. Tag the chat as Needs Manual Verification and create a task for tomorrow.

tools

tags.set
tasks.add