telegram-e2e-userbot

Drive Telegram Test Server bots as a real QA user to record end-to-end OpenClaw behavior.

388k|81.5k|Updated Nov 24, 2025
One-click install
npx skills add https://github.com/openclaw/openclaw --skill telegram-e2e-userbot
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: telegram-e2e-userbot
Source: https://github.com/openclaw/openclaw/tree/main/.agents/skills/telegram-e2e-userbot
Command: npx skills add https://github.com/openclaw/openclaw --skill telegram-e2e-userbot

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires node:test, node:assert/strict, node:child_process, node:fs, node:os, node:path, node:url, node:util, node:crypto, and includes scripts (resource) and references (resource) components.

What problem does it solve?

End-to-end testing of OpenClaw's Telegram channel requires observing user-visible behavior such as edits, deletions, reactions, typing, and rich content that a second bot cannot see. This Skill solves that by driving a dedicated QA user account through TDLib against Telegram's Test Server, recording a structured event timeline as evidence.

Core Features & Use Cases

  • Real-user driving: Uses TDLib as a headless user transport so the driver observes the same Telegram events a human would, including message edits, deletions, reactions, and typing indicators.
  • Convex-leased credentials: Acquires and releases SUT bot tokens and independent TDLib authorizations through a shared Convex credential pool, keeping parallel runs isolated.
  • Evidence-based verification: Records NDJSON event timelines plus provider request logs, then judges each claim against Telegram-observable facts and matching model boundaries.
  • Use Case: Verify that a code change to OpenClaw's Telegram delivery lifecycle correctly emits a progress message, edits it with commentary, and finalizes a persistent answer visible to the QA user.

Quick Start

Use the telegram-e2e-userbot skill to drive a DM turn against the OpenClaw Telegram bot on the Test Server and record the resulting event timeline as proof.

Frequently Asked Questions about telegram-e2e-userbot

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run an end-to-end Telegram test against OpenClaw on the Test Server?

Run the run-mock-sut-user-e2e.mjs script with --dm or a group chat target, --text for the prompt, and --record plus --output paths. The runner leases a credential, starts a fresh gateway and mock provider, drives the QA user, and writes an NDJSON event timeline plus a summary JSON.

What is the difference between the Telegram userbot runner and a regular bot-to-bot test?

The userbot runner uses TDLib to act as a real Telegram user, so it observes edits, deletions, reactions, and typing that a second bot cannot see. Bot-to-bot tests miss these user-visible events because Telegram only delivers them to the message owner.

Does the Telegram E2E skill require Convex CLI authentication?

Yes, for team and ClawSweeper runs the lease helper reads the production broker credential through an authenticated convex CLI on PATH. CI workers can alternatively provide OPENCLAW_QA_CONVEX_SITE_URL and OPENCLAW_QA_CONVEX_SECRET_CI environment variables.

Why does the Telegram E2E runner require unused Gateway and mock provider ports?

Managed workloads on a shared host must pass distinct --gateway-port and --mock-port values to avoid colliding with other gateways or mock providers. The defaults 19879 and 19882 are only safe on isolated hosts.

Can I extend the Telegram E2E harness to cover new behavior claims?

Yes, the harness is an extension point. During a lease the worker may change the test config, edit the harness, run arbitrary argv commands, and use the leased TDLib session or any Telegram Test Bot API method needed to expose the claim.

When should I use --record instead of --expect for Telegram E2E verification?

Use --record to capture the live event timeline for agent inspection and evidence-based judgment. Use --expect only for a quick reply check without recording, since recording mode rejects probe assertions.