Every task needs a proof contract

An airdrop task is not a sentence beside a checkbox. It is a contract describing the required action, who can perform it, the evidence accepted, when that evidence expires and what eligibility it creates. Without that contract, users cannot know why a task failed and operators cannot distinguish fraud from integration failure.

Write the proof contract before publishing the reward. A channel task may require current membership at verification time or continued membership until a snapshot. A product task may require a server event with a unique account. A social-network task may have no reliable API evidence and therefore need manual review or a lower weight.

TaskStrong evidenceWeak evidence
Join Telegram channelBot API membership state with correct bot accessUser presses Done or opens the channel
Start partner botPartner callback or attributable start eventDestination click
Complete Mini App actionValidated server-side product eventClient local storage or screenshot
Follow external accountProvider API or manual review where permittedTyped username without verification
Refer a userImmutable attribution plus qualification eventShared link or raw click

Verify Telegram membership with the right permissions

Telegram's getChatMember method can return information for other users when the bot is an administrator in the chat. If the bot lacks access, the chat identifier is wrong or the channel is private without the expected relationship, a verification failure can look like a user failure. Test the bot's permission and target chat before the campaign begins.

Map Telegram's member states to the published rule. Creator, administrator and member normally satisfy a current-membership requirement. Left or kicked does not. Restricted needs careful interpretation because the account may still be a member. Store the checked state and time so support can distinguish what Telegram reported from what the UI displayed.

  • The verification bot is an administrator where required.
  • The canonical chat ID is stored instead of relying on a mutable title.
  • Private invite links are not mistaken for chat identifiers.
  • Member-state mapping matches the published eligibility rule.
  • API errors create a retryable system state, not an automatic user rejection.
  • The verification time and rule version are recorded.

Submitted, verified and eligible are different states

A verified action does not always mean immediate, transferable value. Airdrops often use tasks to calculate future eligibility. Use language such as points, eligibility or allocation input until the distribution asset and process exist. Do not display every verified task as withdrawable balance.

  1. Available

    The task is visible to the account under campaign rules.

  2. Started

    The destination or instruction was opened; no reward proof exists yet.

  3. Submitted

    The user asks for verification or supplies permitted evidence.

  4. Verified

    The server confirms the task under a specific rule version.

  5. Eligible

    The verified task contributes to the airdrop allocation or milestone.

  6. Revoked

    A condition that must persist no longer holds before the snapshot.

  7. Finalized

    The snapshot or distribution locks the result under published rules.

Decide whether membership must persist

If the rule requires only joining once, a successful check can be permanent. If it requires membership at a future snapshot, the system must recheck before finalization. Publish that distinction. Retroactively revoking a reward under an unstated stay-until-distribution condition is a common source of distrust.

Recheck in batches with rate limits and incident handling. A temporary Telegram API failure should not mass-revoke legitimate users. Preserve the last successful state, mark the recheck as unavailable and retry according to an operator procedure.

Off-platform tasks need lower confidence

A Telegram bot cannot automatically prove every YouTube subscription, social follow, website registration or wallet action. Some providers expose APIs with user authorization; others prohibit or limit this use. Where direct evidence is unavailable, choose manual review, partner callback, a cryptographic wallet proof or a lower-value self-attested task.

Do not ask users for passwords, seed phrases, private keys or Telegram login codes. A screenshot can assist review but is easy to reuse and may expose personal data. Collect the minimum evidence, publish retention rules and provide a rejection reason without revealing anti-fraud thresholds.

Make verification idempotent and auditable

A successful task should write one completion for one account, campaign, task and rule version. Repeated Verify taps return the existing result. If the task can be repeated, create explicit periods or instances instead of deleting the prior completion.

Keep the external evidence reference, normalized result, check time and resulting eligibility event. When an operator corrects a false rejection, write a compensating decision with an actor and reason. Editing a total without the source decision makes later reconciliation impossible.

Working formulaOne account + one task instance + one rule version = at most one eligibility credit

Design for honest failure messages

FailureUser messageOperator action
Not currently a memberJoin the specified channel, then retryConfirm target chat and member-state mapping
Bot lacks accessVerification is temporarily unavailableRestore bot permission; do not blame the user
External provider unavailableWe could not check this task yetRetry with backoff and preserve submission
Evidence does not matchThe submitted account or event could not be linkedExpose a safe correction path
Already verifiedTask completedReturn the existing eligibility result
Rule expiredThis task closed at the published timeKeep the historical decision auditable

A prelaunch verification test

Run this test before promotion. Buying traffic for a task flow whose verification is ambiguous creates support debt and a contaminated allocation. The best acquisition campaign cannot repair an eligibility ledger that owners and users cannot audit.

  • A clean account completes each task through the published path.
  • A nonmember fails the channel check and can retry after joining.
  • A user who leaves follows the published persistent-membership rule.
  • Repeated Verify taps never create duplicate eligibility.
  • A Telegram API error produces a retryable system failure.
  • A self-referral or repeated wallet does not create an extra allocation.
  • The operator can explain every state from logs without opening the production database manually.
  • The snapshot and distribution process can reconcile total eligible liability.

Common questions

Can a Telegram bot verify that a user joined a channel?

Yes, when the bot has the required chat access and uses Telegram's membership method. The result should be checked on the server and mapped to the published rule.

Why does channel verification fail after the user joined?

Common causes are missing bot administrator access, the wrong chat ID, API delay or an incorrect mapping of Telegram member states. Treat API errors separately from a true nonmember result.

Can an airdrop bot verify YouTube or social tasks?

Only when the external platform provides permitted evidence linked to the user. Otherwise use manual review, a partner callback or a lower-confidence task; a Done button is not proof.

Should users remain in the channel until distribution?

Only if the published rules say so. If eligibility depends on a future snapshot, name it and recheck safely before finalization.

How do I stop duplicate task rewards?

Use a unique account, campaign, task-instance and rule-version key so repeated callbacks return the original result rather than creating another credit.

Sources and further reading

Technical and product claims were checked against these primary sources.