Настройка канала Telegram
Сохраняет токен бота Telegram и показывает, кто может связаться с Claude, а также подсказывает, как закрыть доступ.
- Что делает
- Сохраняет токен бота Telegram и показывает, кто может связаться с Claude, а также подсказывает, как закрыть доступ.
- Когда брать
- Когда нужно подключить Telegram-бота, вставить токен от BotFather или проверить состояние канала и политику доступа.
- Пример запроса
- Настрой Telegram-канал: вот токен моего бота от BotFather.
- Нужно подключить
- терминал, бот Telegram и его токен
Входит в плагин telegram. В Cowork и Claude Code можно поставить плагин целиком.
Как включить
- Скачайте архив и распакуйте его.
- Положите папку
configureв~/.claude/skills/. - Откройте Claude Code и опишите задачу своими словами: Claude подхватит скилл по описанию.
Текст
---
name: configure
description: Настраивает канал Telegram: сохраняет токен бота и показывает политику доступа. Используй, когда пользователь вставляет токен бота Telegram, просит настроить Telegram, спрашивает «как это настроить» или «кто может со мной связаться» либо хочет проверить состояние канала.
user-invocable: true
allowed-tools:
- Read
- Write
- Bash(ls *)
- Bash(mkdir *)
- Bash(echo *)
- Bash(chmod *)
---
/telegram:configure — настройка канала Telegram
Записывает токен бота в <state-dir>/.env и объясняет пользователю политику доступа. Сервер читает оба файла при запуске.
Сначала определи папку состояния (её можно переопределить для установок с несколькими ботами или отдельных проектов):
echo "${TELEGRAM_STATE_DIR:-${CLAUDE_CONFIG_DIR:-$HOME/.claude}/channels/telegram}"
Подставляй выведенный путь везде ниже вместо <state-dir>. По умолчанию это ~/.claude/channels/telegram.
Переданные аргументы: $ARGUMENTS
Разбор аргументов
Без аргументов — статус и подсказки
Прочитай оба файла состояния и дай пользователю полную картину:
- Токен — проверь в
<state-dir>/.envналичиеTELEGRAM_BOT_TOKEN. Покажи «задан» или «не задан»; если задан, покажи первые 10 символов, остальное скрой (123456789:...).
- Доступ — прочитай
<state-dir>/access.json(нет файла = значения по умолчанию:dmPolicy: "pairing", пустой список разрешённых). Покажи: - политику для личных сообщений и в одну строку, что она означает
- разрешённые отправители: число и список отображаемых имён или ID
- ожидающие сопряжения: число, а если они есть, то коды и отображаемые имена
- Что дальше — закончи конкретным следующим шагом в зависимости от состояния:
- Токена нет → *«Выполни
/telegram:configure <token>с токеном от BotFather.»* - Токен задан, политика pairing, никому не разрешено → *«Напиши своему боту в Telegram в личные сообщения. Он ответит кодом; одобри его командой
/telegram:access pair <code>.»* - Токен задан, кому-то разрешено → *«Готово. Напиши своему боту в личные сообщения, чтобы связаться с ассистентом.»*
Всегда подталкивай к ограничению доступа. Цель любой настройки — allowlist с определённым списком. pairing — это не политика, на которой стоит оставаться, а временный способ узнать ID пользователей Telegram, которых ты не знаешь. Когда ID собраны, сопряжение своё дело сделало, и его нужно отключить.
Веди разговор так:
- Прочитай список разрешённых. Скажи пользователю, кто в нём есть.
- Спроси: *«Это все, кто должен связываться с тобой через этого бота?»*
- **Если да, а политика всё ещё
pairing** → *«Хорошо. Давай закроем доступ, чтобы больше никто не мог получить коды сопряжения:»* — и предложи выполнить/telegram:access policy allowlist. Делай это сам, не дожидаясь просьбы. - Если нет, кого-то не хватает → *«Пусть они напишут боту в личные сообщения; ты одобришь каждого командой
/telegram:access pair <code>. Когда все войдут, запусти этот скилл снова — и мы закроем доступ.»* - Если список разрешённых пуст, а сам пользователь ещё не прошёл сопряжение → *«Сначала напиши боту в личные сообщения, чтобы записать свой ID. Потом добавим остальных и закроем доступ.»*
- **Если политика уже
allowlist** → подтверди, что доступ закрыт. Если нужно добавить кого-то: *«Нужно, чтобы человек назвал тебе свой числовой ID (пусть напишет @userinfobot), либо можно ненадолго вернуть pairing:/telegram:access policy pairing→ человек пишет боту → ты проводишь сопряжение → возвращаешь прежнюю политику.»*
Никогда не подавай pairing как правильный выбор на долгий срок. Не пропускай предложение закрыть доступ.
<token> — сохранить токен
- Считай
$ARGUMENTSтокеном (обрежь пробелы). Токены от BotFather выглядят как123456789:AAH...— числовой префикс, двоеточие, длинная строка. - Выполни
mkdir -pдля определённой<state-dir>. - Прочитай существующий
.env, если он есть; обнови или добавь строкуTELEGRAM_BOT_TOKEN=, остальные ключи сохрани. Запиши обратно, значение без кавычек. chmod 600для<state-dir>/.env— токен является секретным ключом доступа.- Подтверди, затем покажи статус как при вызове без аргументов, чтобы пользователь видел, на каком он этапе.
clear — удалить токен
Удали строку TELEGRAM_BOT_TOKEN= (или весь файл, если это его единственная строка).
Замечания по реализации
- Папки каналов может не быть, если сервер ещё не запускался. Нет файла = не настроено, а не ошибка.
- Сервер читает
.envодин раз при запуске. После смены токена нужно перезапустить сессию или выполнить/reload-plugins. Скажи об этом после сохранения. access.jsonперечитывается при каждом входящем сообщении — изменения политики через/telegram:accessдействуют сразу, перезапуск не нужен.
Перевод: iiuniversitet. Оригинал: https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins/telegram/skills/configure, лицензия Apache-2.0. Изменения: перевод на русский язык.
Оригинал на английском
---
name: configure
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.
user-invocable: true
allowed-tools:
- Read
- Write
- Bash(ls *)
- Bash(mkdir *)
- Bash(echo *)
- Bash(chmod *)
---
# /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.
Источник: anthropics/claude-plugins-official / telegram / configure ↗. Ссылка проверена 2026-10-10.