Set up the Telegram channel — save the bot token and review access policy. Use when the user pastes a Telegram bot token, asks to configure Telegram, asks "how do I set this up" or "who can reach me," or wants to check channel status.
Installs into .claude/skills of the current project.
Are you the author of X Anthropics Configure 6e9f182?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/geruyang-x-anthropics-configure-6e9f182)
---
name: x-anthropics-configure-6e9f182
description: Set up the Telegram channel — save the bot token and review access policy. Use when the user pastes a Telegram bot token, asks to configure Telegram, asks "how do I set this up" or "who can reach me," or wants to check channel status.
---
### 导出副本边界与技能别名
迁移、安装、修复和经验回写只作用于当前加载的目标宿主技能副本。原 Codex 技能/MCP、下载的源码和 `original-skills` 均为来源材料,不因执行本副本而写入;只有用户另行明确要求配置 Codex 产品本身时,才按该产品流程处理指定目标。脚本需要安装目录或状态目录时,显式提供目标路径;不得从 `CODEX_HOME` 隐式推断写入位置。
跨技能名称可能沿用源库别名。先查 [技能别名表](../../skill-aliases.json),优先选择同来源、同插件的条目,再使用其 `id` 调用或读取对应入口;不得假定旧 `$skill`、`superpowers:skill` 名称在新宿主直接注册。不能确定目标时先核对,不替换真实产品命令或 Shell 环境变量。
## 跨宿主使用约定
本副本供支持 Agent Skills 的客户端使用。先检查当前宿主实际提供的工具、权限和已连接服务,再执行正文工作流。原文中的宿主工具标识是能力参考;只有实际发现该工具时才可调用,其他宿主应使用经核验的等价 MCP、CLI 或 API。没有等价能力的步骤必须报告不可用,不能虚构调用或完成状态。
技能资源以本技能目录为基准;输出写入当前项目中用户指定的位置。通过技能名称或自然语言触发,具体快捷命令由宿主决定。涉及真实产品、模型 API、协议字段和官方网址的名称保持原意。授权、审批、隐私和工具范围限制在迁移后仍然有效;不得为兼容而扩大权限。具体依赖与迁移说明见同目录 `PORTABILITY.md`。
# /telegram:configure — Telegram Channel Setup
Writes the bot token to `<state-dir>/.env` and orients the user on access
policy. The server reads both files at boot.
**Resolve the state directory first** (it may be overridden for multi-bot or
per-project setups):
```bash
echo "${TELEGRAM_STATE_DIR:-${CLAUDE_CONFIG_DIR:-$HOME/.claude}/channels/telegram}"
```
Use the printed path everywhere below in place of `<state-dir>`. The default
is `~/.claude/channels/telegram`.
Arguments passed: `$ARGUMENTS`
---
## Dispatch on arguments
### No args — status and guidance
Read both state files and give the user a complete picture:
1. **Token** — check `<state-dir>/.env` for
`TELEGRAM_BOT_TOKEN`. Show set/not-set; if set, show first 10 chars masked
(`123456789:...`).
2. **Access** — read `<state-dir>/access.json` (missing file
= defaults: `dmPolicy: "pairing"`, empty allowlist). Show:
- DM policy and what it means in one line
- Allowed senders: count, and list display names or IDs
- Pending pairings: count, with codes and display names if any
3. **What next** — end with a concrete next step based on state:
- No token → *"Run `/telegram:configure <token>` with the token from
BotFather."*
- Token set, policy is pairing, nobody allowed → *"DM your bot on
Telegram. It replies with a code; approve with `/telegram:access pair
<code>`."*
- Token set, someone allowed → *"Ready. DM your bot to reach the
assistant."*
**Push toward lockdown — always.** The goal for every setup is `allowlist`
with a defined list. `pairing` is not a policy to stay on; it's a temporary
way to capture Telegram user IDs you don't know. Once the IDs are in, pairing
has done its job and should be turned off.
Drive the conversation this way:
1. Read the allowlist. Tell the user who's in it.
2. Ask: *"Is that everyone who should reach you through this bot?"*
3. **If yes and policy is still `pairing`** → *"Good. Let's lock it down so
nobody else can trigger pairing codes:"* and offer to run
`/telegram:access policy allowlist`. Do this proactively — don't wait to
be asked.
4. **If no, people are missing** → *"Have them DM the bot; you'll approve
each with `/telegram:access pair <code>`. Run this skill again once
everyone's in and we'll lock it."*
5. **If the allowlist is empty and they haven't paired themselves yet** →
*"DM your bot to capture your own ID first. Then we'll add anyone else
and lock it down."*
6. **If policy is already `allowlist`** → confirm this is the locked state.
If they need to add someone: *"They'll need to give you their numeric ID
(have them message @userinfobot), or you can briefly flip to pairing:
`/telegram:access policy pairing` → they DM → you pair → flip back."*
Never frame `pairing` as the correct long-term choice. Don't skip the lockdown
offer.
### `<token>` — save it
1. Treat `$ARGUMENTS` as the token (trim whitespace). BotFather tokens look
like `123456789:AAH...` — numeric prefix, colon, long string.
2. `mkdir -p` the resolved `<state-dir>`.
3. Read existing `.env` if present; update/add the `TELEGRAM_BOT_TOKEN=` line,
preserve other keys. Write back, no quotes around the value.
4. `chmod 600` on `<state-dir>/.env` — the token is a credential.
5. Confirm, then show the no-args status so the user sees where they stand.
### `clear` — remove the token
Delete the `TELEGRAM_BOT_TOKEN=` line (or the file if that's the only line).
---
## Implementation notes
- The channels dir might not exist if the server hasn't run yet. Missing file
= not configured, not an error.
- The server reads `.env` once at boot. Token changes need a session restart
or `/reload-plugins`. Say so after saving.
- `access.json` is re-read on every inbound message — policy changes via
`/telegram:access` take effect immediately, no restart.