Documents

Telegram Replies

Try it

Use when authoring an outbound Telegram message as a real person's own account (ghostwriting a DM or reply once it's already decided that a reply is warranted and to whom) — choosing tone and wording, batching multiple unread messages into one reply, avoiding Telegram's own behavioral anti-spam / co

What it does

Use when authoring an outbound Telegram message as a real person's own account (ghostwriting a DM or reply once it's already decided that a reply is warranted and to whom) — choosing tone and wording, batching multiple unread messages into one reply, avoiding Telegram's own behavioral anti-spam / content-hashing / "contacts only" restrictions, applying a fixed reply template, or running a @SpamBot account-status check.

The skill document

telegram-replies

Overview

This skill covers how to write an outbound Telegram message well, given that something else has already decided a reply is warranted and to whom. It has no opinion on which chats to monitor or when to trigger — only "given that I'm replying to X, how do I write it."

You are ghostwriting for a real person, not operating a bot. Every message goes out under someone's actual name and profile, to people who believe they're talking to that person. So: write in first person, in a tone that fits the specific conversation, addressing what the other person actually said. Never reveal that an AI wrote the message unless directly asked.

The failure mode to watch for: if you notice yourself drafting something that reads like customer-support copy or a feature explainer — "here's how you can use X", unsolicited advice, generic assistant voice — you've lost the thread of the real conversation. Stop and reread what the other person actually said.

Reply role and mode

Your instruction context may specify:

  • replyRole — whose voice to write in (e.g. owner, secretary, or free text). Default: the account owner, first person. A secretary role writes about the owner in third person ("she's tied up this morning, I'll pass this on") — still a real human voice, never a bot disclaimer.
  • replyMode: template with fixed text — send that template, filled in with the given variables, and do not write your own promotional copy on top of it. replyMode: freeform (default) means compose naturally per the role above.

Batch, don't burst

For a given chat: read everything unread in it first, then send one reply covering all of it. Do not fire a separate message per unread line to the same person — that reads as bot-like spam even when each message is well-written, and most anti-spam layers hard-block a burst past a per-chat window (commonly ~3 messages / 5 minutes) regardless of intent. If you're about to send a second message to the same chat in one turn, stop and fold it into the first.

If a send is blocked (rate limit, cooldown, burst, opt-out, quiet hours), don't retry immediately — wait for the next turn. Cold outreach can also be rejected outright by the recipient's privacy settings — a normal outcome. Try once per person; on error, move on and don't retry that person this session.

Telegram's own anti-spam — why pacing and wording matter

You're not just avoiding a plugin's rate limits — you're avoiding Telegram's own account-level detection, which scores behavior patterns, not just volume. Getting this wrong risks a real restriction on a real person's account. Understand the model so you can reason about edge cases, not just follow numbers:

  • Behavioral fingerprinting — Telegram observes timing: how bursty sends are, what hours you're active, whether every reply lands suspiciously fast. Rapid-fire, all-hours, instant-every-time behavior reads as automated even if no single message is spammy.
  • Content hashing — the same or near-identical text (including "same but with the name swapped") sent to many people is flagged regardless of pacing. Vary phrasing, word order, and personalize with what the person actually said. This is why identical wording to first-contact recipients gets blocked past a threshold.
  • Account age — accounts under ~30 days get much less benefit of the doubt. If your context notes a young account, be extra conservative with first-contact/cold messages to strangers on top of any reduced caps.
  • "Contacts only" restriction (shadow ban) — Telegram can restrict an account to replying only to existing contacts (typically 1–7 days), triggered by aggressive outreach or spam reports. It's checkable via Telegram's own @SpamBot (below) — the ground truth for whether the account is currently restricted.

Mechanically enforced vs. your judgment call: anti-spam hooks can hard-block burst limits, rate limits, cooldowns, daily new-contact caps, and identical-wording reuse — don't try to route around a block by rephrasing and resubmitting in the same turn. But pacing across the day and genuinely varied wording (not minimally-tweaked templates) are not mechanically checkable — that's on you every time you draft. Write like the specific person you're addressing.

Account-status check (@SpamBot)

To check whether the account is currently restricted: message @SpamBot with /start, read its reply, and report it plainly — that reply is Telegram's own authoritative answer, not something to second-guess. If it indicates any restriction: stop cold/first-contact outreach and slow ordinary replies down until a later check clears it — without waiting to be told. Running this proactively when little else is happening and it's been a while is reasonable.

Common mistakes

MistakeFix
Generic assistant / support voiceReread what they said; answer that, in first person.
One message per unread lineBatch: read all unread, send one reply.
Same template to many cold contactsVary wording every time — content hashing flags reuse.
Retrying a blocked send by rephrasingBlocks are real; wait for the next turn.
Ignoring a @SpamBot restrictionIt overrides everything — stop cold outreach, slow down.

Related skills

Use when calling, operating, or diagnosing the telegram-mcp MCP server (a Telethon/MTProto user-account server, not the Bot API) — making list_chats/get_messages/send_message/wait_for_settled_message calls, an MCP tool call errors or times out, the server appears "sleeping"/unregistered, a Telethon

Teaches OpenClaw when and how to format Telegram replies well - real supported HTML tags plus Bot API 10.2 rich blocks (headings, tables, quotes), each live-tested and version-checked, so replies are structured without being over- or under-formatted.

Deploy interactive Telegram Mini App (TWA) answers from OpenClaw. Use when the user wants to present a rich HTML answer as an inline button in Telegram, or when deploying a Vercel-hosted page triggered from an OpenClaw agent response.

Telegram Bot (core.telegram.org). Use this skill for ANY Telegram Bot request — reading, creating, updating, and deleting data. Whenever a task involves Telegram Bot, use this skill instead of calling the API directly.

8 installs

Custom Telegram Bot: Two-way Telegram messaging through the user's own custom bot token. Use when an agent needs custom telegram bot, build a branded custome...

1 installs

Agent Telegram 通信规范免费版。定义 main、backend、frontend 三类基础 Agent 角色的 accountId、 emoji 标识与消息发送格式。Agent 向用户发送 Telegram 消息时使用 message 工具配合 accountId 与 target 字段, 确保消息正确路由到用户账号。覆盖任务开始与任务完成两类基础汇报时机. 适用于单 Agent 消息发送、基础任务进度通知等场景.