Skip to main content
Glama

Mila Telegram

Führen Sie Ihre Claude-Code-Sitzung von Telegram aus – und halten Sie sie am Laufen.

Dies ist ein erweiterter Fork des offiziellen Telegram-Kanal-Plugins (Apache-2.0). Das Original verbindet einen Telegram-Bot mit einer Claude-Code-Sitzung. Dieser Fork fügt die Dinge hinzu, die man braucht, sobald man tatsächlich jeden Tag so arbeitet: Teams in Gruppenchats, Sprachnachrichten und einen Poller, der keine Nachrichten verliert, wenn die Sitzung neu startet.

Was dieser Fork hinzufügt

Ein Daemon, der die Sitzung überlebt. Im Original lebt der Telegram-Poller im Sitzungsprozess: Starten Sie Claude Code neu und jede Nachricht, die in der Zwischenzeit gesendet wurde, ist verloren. Hier läuft der Poller als langlebiger Daemon, der Ereignisse an eine Journaldatei anhängt, und die Sitzung spielt sie beim Start von einem Cursor aus ab. Neustart, Absturz, Upgrade – eingehende Nachrichten warten in der Datei und kommen an, wenn die Sitzung zurückkehrt.

Automatischer Gruppenbeitritt mit Ein-Tipp-Genehmigung. Fügen Sie den Bot zu einer Gruppe hinzu und senden Sie /channel_join. Der Besitzer erhält eine Karte mit vier Schaltflächen in einem privaten Chat: Allen antworten, nur bei Erwähnung, nur zuhören (der Bot hört den Chat, aber Antworten in ihn werden mechanisch blockiert) oder ablehnen. Jede Entscheidung – auch Ablehnungen – wird an ein auth-log.jsonl-Journal angehängt, und jeder verbundene Chat erhält eine Kontextkarte in chats/<id>.md plus ein generiertes CHATS.md-Register. Keine numerischen Chat-IDs, kein manuelles Bearbeiten von JSON; Gruppennachrichten können die Allowlist niemals selbst ändern – die Genehmigung erfolgt nur im privaten Chat des Besitzers.

Sprachtranskription. Sprachnachrichten werden einem Transkriptionsbefehl Ihrer Wahl übergeben (setzen Sie TELEGRAM_VOICE_TRANSCRIBE_CMD), und der Text erreicht den Assistenten zusammen mit dem Audio. Nicht gesetzt bedeutet, dass Sprachnachrichten einfach unübersetzt durchgehen – keine Standardeinstellung, kein Anbieter.

Antwort-Zitat-Kontext. Wenn jemand auf eine frühere Nachricht antwortet, wird der zitierte Text mit der neuen Nachricht übertragen, sodass der Assistent über die Nachricht antwortet, auf die Sie tatsächlich gezeigt haben, statt über das Letzte im Chat.

Alles aus dem ursprünglichen Plugin funktioniert weiterhin: Kopplung, Allowlists, Erkennung von Erwähnungen, reply / react / edit_message, Fotos, Anhänge, Tippindikatoren.

Related MCP server: tsgram-mcp

Sicherheit

Lesen Sie dies, bevor Sie es auf einen wichtigen Rechner setzen.

Nachrichten sind nicht vertrauenswürdige Eingaben. Alles, was jemand dem Bot sendet, erreicht Ihren Assistenten als Inhalt. Jemand in einem zugelassenen Chat kann versuchen, ihn zu instruieren. Behandeln Sie den Kanal als öffentliche Tür zu einer Sitzung, die Dateien lesen und Befehle ausführen kann.

Gruppen erfordern standardmäßig eine Erwähnung. Eine genehmigte Gruppe wird mit requireMention: true hinzugefügt, sodass der Bot nur antwortet, wenn er angesprochen wird. Das zu deaktivieren bedeutet, dass jede Nachricht von jedem Mitglied direkt in die Sitzung geht – das ist eine echte Prompt-Injection-Oberfläche, keine theoretische. Deaktivieren Sie es nur für einen Chat, in dem Sie jedem Mitglied vertrauen.

Anhänge können nach außen gehen. Das reply-Werkzeug sendet jeden absoluten Pfad, den der Assistent übergibt. Das ist beabsichtigt – so bekommen Sie Dateien aus einer Sitzung –, aber in Kombination mit dem obigen Punkt ist es auch ein Exfiltrationspfad. Ihre Berechtigungseinstellungen, nicht dieses Plugin, stehen zwischen einer Nachricht und einer Datei, die Ihren Rechner verlässt.

Das Ereignisjournal ist eine Vertrauensgrenze. Der Daemon schreibt Ereignisse in eine Datei und die Sitzung spielt sie ab; wer diese Datei schreiben kann, spricht mit der Stimme von Telegram. Das Journal und sein Verzeichnis werden mit 0600/0700 erstellt, und die Brücke spielt nur eine Allowlist von zwei Methoden ab, sodass eine gefälschte Zeile keine beliebigen aufrufen kann. Halten Sie das Zustandsverzeichnis auf einem Dateisystem, das nur Sie beschreiben können.

Ihr Token liegt in ~/.claude/channels/telegram/.env mit 0600 und wird aus der Fehlerausgabe entfernt, bevor etwas protokolliert wird.

Voraussetzungen

  • Bun – der MCP-Server läuft auf Bun: curl -fsSL https://bun.sh/install | bash

Einrichtung

1. Erstellen Sie einen Bot. Schreiben Sie @BotFather, senden Sie /newbot und kopieren Sie den Token, den Sie erhalten (das Ganze, einschließlich der führenden Ziffern und des Doppelpunkts).

2. Installieren Sie das Plugin. Aus einer Claude-Code-Sitzung:

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

3. Geben Sie dem Server den Token.

/telegram:configure 123456789:AAHfiqksKZ8...

Dies schreibt TELEGRAM_BOT_TOKEN=... in ~/.claude/channels/telegram/.env. Sie können diese Datei auch selbst schreiben oder die Variable in Ihrer Shell setzen – die Shell gewinnt.

Um mehrere Bots auf einem Rechner zu betreiben, weisen Sie TELEGRAM_STATE_DIR pro Instanz auf ein anderes Verzeichnis.

4. Starten Sie mit dem Kanal-Flag neu. Der Server verbindet sich ohne es nicht:

claude --channels plugin:mila-telegram@mila

5. Koppeln. Schreiben Sie Ihrem Bot eine Direktnachricht; er antwortet mit einem 6-stelligen Code. In der Sitzung:

/telegram:access pair <code>

6. Sichern Sie es ab. Die Kopplung dient dazu, Ihre ID zu erfassen. Sobald Sie drin sind, wechseln Sie zu einer Allowlist, damit Fremde keine Kopplungscodes mehr erhalten:

/telegram:access policy allowlist

Den Daemon ausführen

Der Daemon macht Neustarts kostenlos. Führen Sie receiver.ts als Dienst unter Ihrem bevorzugten Prozess-Supervisor aus – launchd auf macOS, systemd auf Linux – mit RECEIVER_DAEMON=1 in seiner Umgebung:

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

Er schreibt Ereignisse in $TELEGRAM_STATE_DIR/inbound/events.jsonl. Wenn eine Sitzung startet und den Daemon am Leben findet, liest sie aus diesem Journal statt zu pollen, sodass die beiden nie um die Telegram-API konkurrieren. Ohne laufenden Daemon pollt die Sitzung direkt, genau wie das ursprüngliche Plugin – der Daemon ist optional.

Konfiguration

Variable

Zweck

TELEGRAM_BOT_TOKEN

Bot-Token von BotFather. Erforderlich.

TELEGRAM_STATE_DIR

Zustandsverzeichnis. Standard ~/.claude/channels/telegram.

TELEGRAM_VOICE_TRANSCRIBE_CMD

Befehl, der eine Sprachdatei transkribiert. Nicht gesetzt bedeutet keine Transkription.

RECEIVER_DAEMON

Auf 1 setzen, um receiver.ts als Polling-Daemon auszuführen.

Zugriffskontrolle

Siehe ACCESS.md für DM-Richtlinien, Gruppen, Erkennung von Erwähnungen, Zustellungskonfiguration, Skill-Befehle und das access.json-Schema.

IDs sind numerische Benutzer-IDs – erhalten Sie Ihre von @userinfobot. ackReaction akzeptiert nur die feste Emoji-Whitelist von Telegram.

Dem Assistenten ausgesetzte Werkzeuge

Werkzeug

Zweck

reply

An einen Chat senden. Nimmt chat_id + text, optional reply_to für natives Threading und files (absolute Pfade) für Anhänge. Bilder werden als Fotos gesendet, alles andere als Dokumente, jeweils 50 MB. Langer Text wird aufgeteilt. Gibt die gesendete(n) Nachrichten-ID(s) zurück.

react

Eine Emoji-Reaktion per Nachrichten-ID hinzufügen. Nur die feste Whitelist von Telegram (👍 👎 ❤ 🔥 👀 …).

edit_message

Eine vom Bot gesendete Nachricht bearbeiten. Gut für „arbeite…“ → Ergebnis. Nur eigene Nachrichten.

download_attachment

Eine Datei per file_id aus einer eingehenden Nachricht abrufen und ihren lokalen Pfad zurückgeben.

Eingehende Nachrichten lösen automatisch einen Tippindikator aus.

Keine Historie, keine Suche

Die Telegram-Bot-API bietet weder das eine noch das andere. Der Bot sieht nur Nachrichten, wenn sie eintreffen – es gibt keine Möglichkeit, die Vergangenheit eines Chats abzurufen. Wenn der Assistent früheren Kontext benötigt, muss er Sie danach fragen. Dies ist eine Grenze von Telegram, nicht dieses Plugins, und der Grund, warum Fotos bei Ankunft eifrig heruntergeladen werden.

Lizenz und Namensnennung

Apache-2.0. Dies ist ein modifizierter Fork des telegram-Kanal-Plugins von anthropics/claude-plugins-official, Urheberrecht Anthropic, PBC. Siehe NOTICE für die Liste der Änderungen.

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