Навык (skill) для автоматической настройки двусторонней связи между Telegram и Claude Code через официальный плагин telegram@claude-plugins-official.
Что это даёт: Вы пишете боту в Telegram — сообщение приходит прямо в сессию Claude Code. Claude отвечает — ответ появляется в Telegram. Полноценный мост.
Откройте @BotFather в Telegram, отправьте /newbot, получите токен вида 123456789:AAHfiqksKZ8...
Напишите @userinfobot — он ответит вашим числовым ID.
# Скачайте и распакуйте в навыки Claude Code
git clone https://github.com/nebelov/telegram-channel-setup.git ~/.claude/skills/telegram-channel-setup~/.claude/skills/telegram-channel-setup/scripts/setup-telegram-channel.sh <ТОКЕН_БОТА> <ВАШ_TELEGRAM_ID>Скрипт автоматически:
- Проверит и установит Bun (runtime для MCP-сервера плагина)
- Проверит токен бота через Telegram API
- Установит плагин
telegram@claude-plugins-official - Запишет конфигурацию (
.env,access.json) - Создаст скрипт запуска
~/bin/cldс нужным флагом--channels - Отправит тестовое сообщение в Telegram
# Из НОВОЙ вкладки терминала:
cldОтправьте любое сообщение вашему боту в Telegram. Оно должно появиться в сессии Claude Code как <channel> уведомление.
- Claude Code >= 2.1.81
- Bun >= 1.0 (установится автоматически)
- macOS / Linux (zsh или bash)
Telegram MCP-сервер (Bun) Claude Code
| | |
|--- сообщение --------->| |
| |--- notification ------->|
| | (notifications/ |
| | claude/channel) |
| | |--- Claude думает
| |<--- reply tool ---------|
|<-- ответ --------------| |
Плагин запускает MCP-сервер на grammY, который:
- Получает сообщения через long polling
- Пересылает их в Claude Code как MCP-уведомления
- Предоставляет tools для ответа (
reply,react,edit_message)
Проблема: Токен невалидный. BotFather использует шрифт, где I (заглавная i) и l (строчная L) неотличимы.
Решение: Проверьте токен:
curl -s "https://api.telegram.org/bot<ТОКЕН>/getMe"Если 401 Unauthorized — попробуйте заменить I на l и наоборот. Или скопируйте токен заново из BotFather (не со скриншота!).
Проблема: Claude Code запущен без флага --channels.
Диагностика:
ps aux | grep claude | grep channelsРешение: Флаг --channels plugin:telegram@claude-plugins-official обязателен. Он экспериментальный и не показан в --help, но без него входящие уведомления не маршрутизируются.
Используйте скрипт ~/bin/cld (создаётся автоматически), а не alias в .zshrc — alias кэшируется в памяти шелла и не обновляется до перезапуска терминала.
Проблема: Shell alias загружается один раз при старте терминала. Изменения в .zshrc не действуют в уже открытых вкладках.
Решение: Этот навык создаёт исполняемый скрипт ~/bin/cld вместо alias. Скрипт перечитывается при каждом вызове. Если у вас есть старый alias cld — удалите его:
# В ~/.zshrc удалить строку с alias cld=...
# Или выполнить в текущем терминале:
unalias cld 2>/dev/nullПлагин ожидает конкретные имена полей:
{
"dmPolicy": "allowlist",
"allowFrom": ["308402137"],
"groups": {},
"pending": {}
}Частые ошибки:
dm_policyвместоdmPolicyallowlistвместоallowFrom- Числа вместо строк в
allowFrom - Объекты
{"id": 123}вместо простых строк"123"
Два процесса пытаются получать обновления от одного бота. Остановите старый поллер или используйте другого бота.
Если скрипт не подходит, все шаги описаны в SKILL.md.
После настройки доступны команды в Claude Code:
/telegram:access — статус
/telegram:access pair <код> — подтвердить пейринг
/telegram:access policy allowlist — закрыть от посторонних
/telegram:access allow <id> — добавить пользователя
/telegram:access remove <id> — удалить пользователя
MIT