Skip to main content
Glama

Mila Telegram

Запускайте свою сессию Claude Code из Telegram — и держите её работающей.

Это расширенный форк официального плагина Telegram-канала (Apache-2.0). Оригинал подключает Telegram-бота к сессии Claude Code. Этот форк добавляет то, что начинает требоваться, когда вы действительно работаете так каждый день: команды в групповых чатах, голосовые сообщения и поллер, который не теряет ваши сообщения при перезапуске сессии.

Что добавляет этот форк

Демон, который переживает сессию. В оригинале поллер Telegram живёт внутри процесса сессии: перезапустите Claude Code — и все сообщения, отправленные за это время, потеряны. Здесь поллер работает как долгоживущий демон, который дописывает события в файл-журнал, а сессия при запуске воспроизводит их с курсора. Перезапуск, сбой, обновление — входящие сообщения ждут в файле и приходят, когда сессия возвращается.

Автоподключение к группам с однокнопочным подтверждением. Добавьте бота в группу и отправьте /channel_join. Владелец получает карточку с четырьмя кнопками в личном чате: отвечать всем, только по упоминаниям, только слушать (бот слышит чат, но ответы в него механически блокируются) или отклонить. Каждое решение — включая отклонения — записывается в журнал auth-log.jsonl, а для каждого подключённого чата создаётся контекстная карточка в chats/<id>.md плюс сгенерированный реестр CHATS.md. Никаких числовых ID чатов, никакого ручного редактирования JSON; групповые сообщения сами по себе никогда не могут изменить список разрешённых — одобрение происходит только в личном чате владельца.

Транскрибация голосовых. Голосовые сообщения передаются команде транскрибации на ваш выбор (задайте TELEGRAM_VOICE_TRANSCRIBE_CMD), и текст доходит до ассистента вместе с аудио. Если переменная не задана, голосовые просто проходят без транскрибации — без значения по умолчанию, без вендора.

Контекст цитируемого ответа. Когда кто-то отвечает на более раннее сообщение, цитируемый текст передаётся вместе с новым, так что ассистент отвечает о том сообщении, на которое вы действительно указали, а не о последнем в чате.

Всё из оригинального плагина по-прежнему работает: сопряжение, списки разрешённых, определение упоминаний, reply / react / edit_message, фото, вложения, индикаторы набора текста.

Related MCP server: tsgram-mcp

Безопасность

Прочтите это, прежде чем размещать на машине, которая имеет значение.

Сообщения — это недоверенный ввод. Всё, что кто-либо отправляет боту, попадает к вашему ассистенту как контент. Кто-то в разрешённом чате может попытаться дать ему инструкции. Относитесь к каналу как к публичной двери в сессию, которая может читать файлы и выполнять команды.

Группы по умолчанию требуют упоминания. Одобренная группа добавляется с requireMention: true, поэтому бот отвечает только когда к нему обращаются. Отключение этого означает, что каждое сообщение от каждого участника идёт прямо в сессию — это реальная поверхность для инъекции промптов, а не теоретическая. Отключайте это только для чата, где вы доверяете каждому участнику.

Вложения могут уходить наружу. Инструмент reply отправляет любой абсолютный путь, который передаёт ему ассистент. Это намеренно — так вы достаёте файлы из сессии, — но в сочетании с пунктом выше это также путь экфильтрации. Ваши настройки разрешений, а не этот плагин, стоят между сообщением и файлом, покидающим вашу машину.

Журнал событий — это граница доверия. Демон пишет события в файл, а сессия их воспроизводит; всё, что может писать в этот файл, говорит голосом Telegram. Журнал и его каталог создаются с правами 0600/0700, а мост воспроизводит только список разрешённых из двух методов, так что поддельная строка не может вызвать произвольные. Держите каталог состояния на файловой системе, в которую можете писать только вы.

Ваш токен хранится в ~/.claude/channels/telegram/.env с правами 0600 и удаляется из вывода ошибок до того, как что-либо будет записано в журнал.

Предварительные требования

  • Bun — MCP-сервер работает на Bun: curl -fsSL https://bun.sh/install | bash

Настройка

1. Создайте бота. Напишите @BotFather, отправьте /newbot и скопируйте выданный токен (целиком, включая ведущие цифры и двоеточие).

2. Установите плагин. Из сессии Claude Code:

/plugin marketplace add shakhruz/mila-telegram
/plugin install mila-telegram@mila

3. Дайте серверу токен.

/telegram:configure 123456789:AAHfiqksKZ8...

Это записывает TELEGRAM_BOT_TOKEN=... в ~/.claude/channels/telegram/.env. Вы можете написать этот файл сами или задать переменную в оболочке — оболочка имеет приоритет.

Чтобы запускать несколько ботов на одной машине, укажите TELEGRAM_STATE_DIR на отдельный каталог для каждого экземпляра.

4. Перезапустите с флагом канала. Без него сервер не подключится:

claude --channels plugin:mila-telegram@mila

5. Сопряжение. Напишите боту в личку; он ответит 6-символьным кодом. В сессии:

/telegram:access pair <code>

6. Закройте доступ. Сопряжение существует, чтобы захватить ваш ID. Как только вы внутри, переключитесь на список разрешённых, чтобы посторонние перестали получать коды сопряжения:

/telegram:access policy allowlist

Запуск демона

Демон — это то, что делает перезапуски бесплатными. Запустите receiver.ts как службу под вашим супервизором процессов — launchd на macOS, systemd на Linux — с RECEIVER_DAEMON=1 в его окружении:

RECEIVER_DAEMON=1 bun /path/to/plugin/receiver.ts

Он пишет события в $TELEGRAM_STATE_DIR/inbound/events.jsonl. Когда сессия запускается и обнаруживает, что демон жив, она читает из этого журнала вместо опроса, так что они никогда не конфликтуют за Telegram API. Если демон не запущен, сессия опрашивает напрямую точно так же, как оригинальный плагин — демон необязателен.

Конфигурация

Переменная

Назначение

TELEGRAM_BOT_TOKEN

Токен бота от BotFather. Обязательно.

TELEGRAM_STATE_DIR

Каталог состояния. По умолчанию ~/.claude/channels/telegram.

TELEGRAM_VOICE_TRANSCRIBE_CMD

Команда, которая транскрибирует голосовой файл. Если не задана — транскрибации нет.

RECEIVER_DAEMON

Установите 1, чтобы запустить receiver.ts как демон опроса.

Контроль доступа

См. ACCESS.md для политик личных сообщений, групп, определения упоминаний, конфигурации доставки, команд навыков и схемы access.json.

ID — это числовые ID пользователей — получите свой у @userinfobot. ackReaction принимает только фиксированный список эмодзи Telegram.

Инструменты, доступные ассистенту

Инструмент

Назначение

reply

Отправка в чат. Принимает chat_id + text, опционально reply_to для нативной вложенности и files (абсолютные пути) для вложений. Изображения отправляются как фото, всё остальное — как документы, до 50 МБ каждое. Длинный текст разбивается на части. Возвращает ID отправленных сообщений.

react

Добавить реакцию-эмодзи по ID сообщения. Только фиксированный список Telegram (👍 👎 ❤ 🔥 👀 …).

edit_message

Редактировать сообщение, отправленное ботом. Подходит для «работаю…» → результат. Только свои сообщения.

download_attachment

Получить файл по file_id из входящего сообщения и вернуть его локальный путь.

Входящие сообщения автоматически запускают индикатор набора текста.

Нет истории, нет поиска

Telegram Bot API не предоставляет ни того, ни другого. Бот видит только сообщения по мере их поступления — нет способа получить прошлое чата. Если ассистенту нужен более ранний контекст, ему придётся спросить вас. Это ограничение Telegram, а не этого плагина, и именно поэтому фотографии загружаются сразу по прибытии.

Лицензия и атрибуция

Apache-2.0. Это модифицированный форк плагина канала telegram из anthropics/claude-plugins-official, авторское право Anthropic, PBC. См. NOTICE для списка изменений.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    F
    maintenance
    Enables remote control of AI coding assistants (Claude Code/Codex) via Telegram, allowing you to manage long-running tasks, send commands, and receive notifications from anywhere. Supports unattended mode with smart polling for up to 7 days and multi-session management.
    8
    29
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects Claude Code sessions to Telegram, enabling AI-powered code assistance and file management directly from Telegram chats.
    92
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables Claude Code to act as an autonomous Telegram agent with tools for replying, reacting, editing messages, searching history, and handling attachments. Includes a TUI watchdog for unattended operation.
    1
    AGPL 3.0

View all related MCP servers

Related MCP Connectors

  • Telegram bridge for your MCP-compatible agent. Bidirectional, no LLM in our stack.

  • Multi-tenant Telegram gateway for AI agents — HTTP+stdio, 8 tools, MTProto User API

  • Persistent context for Claude. Your AI always knows your projects and next actions across sessions.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/shakhruz/mila-telegram'

If you have feedback or need assistance with the MCP directory API, please join our Discord server