Fast das gesamte erste Jahr von Vyneron hatte jeder, der Telegram wollte, fünf Schritte vor sich. Die meisten kamen nicht über den zweiten hinaus.
Das Problem: Einen eigenen Bot einzurichten killte die Anmeldungen
Früher lief die Telegram-Seite des Produkts so:
Telegram öffnen. @BotFather anschreiben. Einen neuen Bot erstellen. Einen 46 Zeichen langen Token kopieren, der wie Müll aussieht. Vyneron-Einstellungen öffnen. Den Token in „Eigenen Bot verwenden" einfügen. Warten, bis der Webhook registriert ist. Endlich deiner Aufgabenliste schreiben können.
Jede Anmeldung, die Telegram wollte, musste alle fünf machen. Die meisten beendeten nie den zweiten.
Das lag nicht daran, dass die Leute zu wenig motiviert waren. Es lag daran, dass jeder Schritt von der Sorte war, die nur ein Entwickler genießt: einen Bot erzeugen, ihm einen Namen geben, einen noch freien Benutzernamen finden, einen Token zwischen zwei Apps hin- und herkopieren, darauf vertrauen, dass das Einfügen wirklich gespeichert wurde. Für jemanden, der nur morgen Milch kaufen aus dem Chat schicken wollte, in dem er ohnehin das Abendessen plant, stand dieses Ritual in keinem Verhältnis zum Nutzen.
Also sprangen sie ab. Und die Telegram-Oberfläche – wohl das Eigenständigste an Vyneron – blieb hinter einer Reibungswand, die der Rest des Produkts nicht hatte.
Dieser Beitrag erzählt, wie diese Wand fiel. Was wir ausgeliefert haben, ist ein geteilter Telegram-Bot: Jedes Vyneron-Konto spricht mit demselben @VyneronAIBot, und der Bot findet heraus, zu welchem Arbeitsbereich die Nachricht gehört. Keine eigenen Tokens. Kein Kopieren und Einfügen. Kein Besuch bei @BotFather.
Kurz gesagt
Kurz gesagt: Vyneron hat das Modell „Jedes Konto richtet seinen eigenen Token ein" durch einen einzigen geteilten
@VyneronAIBotersetzt, den jedes Konto in unter zehn Sekunden verbindet. Die Kontoverknüpfung passiert, indem du einen kurzen sechsstelligen Code, der in der Web-App erzeugt wird, in den Chat des Bots einfügst. Die Web-App bleibt die Hauptoberfläche; Telegram ist eine optionale Begleitschicht für alle, die ohnehin in ihrem Messenger leben. Die gesamte Migration dauerte etwa 24 Stunden: dreiunddreißig Commits, eine einmalige Datenbankmigration und eine saubere Umstellung, die die zwei bereits verbundenen Nutzer nicht zerbrach.
Warum ein geteilter Bot ein Jahr brauchte
Die ehrliche Antwort: Tokens pro Konto waren zuerst leichter auszuliefern.
Als Vyneron startete, war „Jedes Konto bringt seinen eigenen Bot mit" eine saubere Isolationsgeschichte. Der Telegram-Verkehr jedes Arbeitsbereichs lief über seinen eigenen Webhook, die Tokens wurden pro Firma verschlüsselt gespeichert, und es gab keine geteilte Identität zu bedenken. Wenn beim Bot eines Kunden etwas schieflief, war es sein Bot: Die Fehlersuche blieb lokal, und es gab nichts Globales, das man aus Versehen umwerfen konnte.
Der Preis war der von oben: Jeder Interessent für Telegram musste fünf Schritte tief ins Entwickler-Territorium, bevor er einen Nutzen bekam. Anfangs duldeten wir das, weil die Nutzerbasis klein genug war, um die Leute einzeln durchzuführen. Als die Reibung in echten Funnel-Daten auftauchte (Konten, die sich anmeldeten, Telegram nie verbanden und still abdrifteten), änderte sich die Rechnung.
So wurde der geteilte Bot von „wäre schön" zu „ist die Einschränkung". Die Aufgabe: jede Isolationsgarantie behalten, die Tokens pro Konto gaben, und gleichzeitig die Einrichtung auf eine einzige Nachricht im Chat zu reduzieren.
Die Architektur, im Klartext
Im geteilten Modell gibt es genau einen Telegram-Bot für das gesamte Produkt: @VyneronAIBot. Der Webhook von Telegram leitet jede eingehende Nachricht an einen einzigen Endpunkt im Backend, der eine Frage beantworten muss, bevor er etwas Nützliches tun kann:
Welches Vyneron-Konto ist dieser Telegram-Nutzer?
Solange der Nutzer nicht verbunden ist, lautet die Antwort „niemand, den wir kennen". Seine Nachricht bekommt eine freundliche, gedrosselte Aufforderung zur Registrierung, mehr nicht: keine Aufgabenerstellung, keine KI-Aufrufe, kein Datenleck. (Die Drosselung gibt es, weil der /start-Ablauf eines einzigen geteilten Bots auch ein gutes Ziel für Lärm ist, also bekommen unverknüpfte Absender höchstens einmal pro Minute eine freundliche Antwort.)
Sobald der Nutzer verbunden ist, ist die Antwort eine Zeile in einer kleinen Tabelle: telegram_user_id → user_id. Ab da behandelt das Backend eingehende Nachrichten genau wie der alte Ablauf pro Konto. Dieselbe KI-Pipeline, dieselbe Aufgabenerstellung, dieselbe Rückmeldung ans Dashboard. Der geteilte Bot ist ein Router; die Logik des Arbeitsbereichs hat sich nicht geändert.
Ein vereinfachtes Bild:
Telegram → Webhook @VyneronAIBot → Backend
│
├─ telegram_user_id bekannt?
│ ├─ ja → Konto laden → Pipeline ausführen
│ └─ nein → gedrosselte Registrierungs-Aufforderung
│
└─ die Pipeline schreibt in die DB der Web-App
│
└─ die Web-App nimmt es auf
Den meisten Aufwand kostete der dritte Schritt des Routings: die allererste Nachricht eines Fremden in eine verifizierte Verknüpfung zu verwandeln, ohne je nach einem Token zu fragen.
Wie die Kontoverknüpfung wirklich funktioniert
Wenn ein angemeldeter Nutzer Einstellungen → Integrationen öffnet und auf Telegram verbinden tippt, prägt das Backend einen kurzen Verknüpfungscode:
code = "8X4-K2Q" # 6 Zeichen, Alphabet ohne 0/O/1/I
user_id = 42
expires_at = now + 10 Minuten
consumed = false
Die Web-App zeigt den Code und einen Direktlink wie t.me/VyneronAIBot?start=8X4-K2Q. Von dort hat der Nutzer zwei gleich kurze Wege:
- Den Direktlink antippen. Telegram öffnet sich, der Bot begrüßt ihn, und die
start-Nutzlast kommt im ersten Update an. - Den Code von Hand in den Bot tippen. Dasselbe Ergebnis, nur langsamer.
In beiden Fällen landet das Backend bei einem einzigen Telegram-Update mit einem Code und einem from.id-Feld (der numerischen Nutzer-ID auf Telegram-Seite). Von dort:
- Den Code suchen. Existiert er nicht, ist abgelaufen oder schon benutzt, mit einem klaren Fehler antworten.
- Ihn atomar als benutzt markieren. Derselbe Code lässt sich nicht zweimal einlösen, auch nicht vom selben Nutzer in zwei parallelen Tipps.
telegram_user_id = from.idauf das passende Vyneron-Konto schreiben.- Im Chat antworten: „✅ Mit deinem Arbeitsbereich verbunden."
Der ganze Ablauf ist aus Nutzersicht eine HTTP-Anfrage und im Backend drei Datenbankoperationen. Kein Token. Kein Kopieren und Einfügen. Kein @BotFather. Und kein Szenario, in dem ein Fremder zum Konto seine Telegram-ID verknüpfen kann, ohne vorher in der Web-App angemeldet zu sein und den Knopf gedrückt zu haben, der den Code erzeugt hat.
Ein paar Details, die mehr zählen, als sie aussehen:
- Der Code ist kurz. Sechs Zeichen mit einem freundlichen Alphabet machen das Tippen von Hand auf einem Handy realistisch. Zehn Zeichen wären technisch sicherer gewesen; sechs war der richtige Kompromiss gegen die Tippfehlerraten, die wir während der Migration gemessen hatten.
- Er läuft in zehn Minuten ab. Lang genug, um vom Laptop zum Handy zu gehen, kurz genug, dass ein geleakter Screenshot nichts mehr nützt, bis es jemand bemerkt.
- Codes sind einmalig und werden ungültig, sobald ein neuer erzeugt wird. Ein zweites Tippen auf „Telegram verbinden" verbrennt den vorigen: Der jüngste Versuch ist immer der einzig gültige. Das beseitigt die Falle „Ich habe zweimal getippt und weiß nicht mehr, welcher Code aktiv ist".
Der Rollout in 24 Stunden
Die ganze Migration kam grob an einem Kalendertag heraus, in zwei Phasen.
Phase 1 – Backend. Dreiundzwanzig Commits, um den geteilten Bot, die Verknüpfungscode-Tabelle, die gedrosselte Aufforderung und das Routing aufzubauen. Dann neun Korrekturen nach dem Review, um die Randfälle zu schließen, die erst sichtbar werden, wenn man dem glücklichen Pfad nicht mehr vertraut: die lifespan-verwaltete Hintergrundaufgabe, auf die nicht gewartet wurde, der Verknüpfungscode, der bei zwei konkurrierenden Anfragen zweimal nutzbar war, der Hilfebefehl, der für Unverknüpfte still ausfiel, der zeitkonstante Vergleich, den der ursprüngliche Commit vergessen hatte, ein übereifriges Ratelimit und einige mehr.
Phase 2 – Kanarienvogel mit acht Tests. Bevor wir die Vordertür öffneten, fuhren wir ein klares Skript: Eine unverknüpfte Nachricht bekommt die Aufforderung, der Verknüpfungscode funktioniert auf dem glücklichen Pfad, derselbe Code lässt sich nicht wiederverwenden, ein neu erzeugter Code macht den vorigen ungültig, der Hilfebefehl verhält sich für Verknüpfte und Unverknüpfte korrekt, der Webhook gibt 200 zurück, selbst wenn die Nachricht nicht verarbeitet werden kann (Telegram wiederholt bei allem außer 200 endlos), und der zentrale Bot ist in /api/health weiter gesund. Jede Prüfung musste bestehen, bevor das Frontend umgestellt wurde.
Phase 3 – Frontend. Die Oberfläche „Eigenen Bot verwenden" in den Einstellungen verschwand. An ihrer Stelle: ein einziger Telegram-Bereich mit drei Zuständen – Nicht verbunden (ein Knopf), Code sichtbar (Countdown, Kopieren, Direktlink) und Verbunden (Kontokarte mit Trennen). Einundzwanzig neue Übersetzungsschlüssel in sechs Sprachen.
Die saubere Umstellung klappte, weil die Nutzerbasis zu diesem Zeitpunkt winzig war (der Gründer und ein Freund), und beide sich am selben Abend über den neuen Ablauf neu verbanden. Für eine größere Basis hätte dieselbe Migration ein Feature-Flag und ein Toleranzfenster gebraucht. Diese Komplexität haben wir bewusst vermieden, weil sie mehr Zeit gekostet hätte als die gesamte Nutzerbasis.
Was gleich blieb: Die Web-App bleibt zentral
Klar gesagt: Nichts davon macht Telegram zur Pflicht.
Die Web-App ist und bleibt die Hauptoberfläche von Vyneron. Aufgaben, Routinen, Notizen, Dateien und KI-Suche funktionieren alle im Browser, ohne Telegram je zu öffnen. Würdest du dich morgen anmelden und den Bot nie verbinden, hättest du das volle Produkt. Die Aktivierungs-E-Mail, die wir 24 Stunden nach der Anmeldung schicken, sagt genau das: Die Web-App ist bereit, und Telegram ist eine optionale Bonus-Oberfläche für alle, die ohnehin in ihrem Messenger leben.
Die Arbeit am geteilten Bot ging darum, Reibung für die Nutzer zu beseitigen, die Telegram wollten, nicht darum, die Oberfläche denen aufzudrängen, die sie nicht wollten. Telegram als Superkraft statt als Pflicht zu behandeln, ist die Linie, zu der wir immer zurückkehren. Viele Vyneron-Nutzer werden nie ein Telegram-Konto verbinden, und das Produkt soll sich auch für sie vollständig anfühlen.
Was als Nächstes kommt
Der geteilte Bot öffnet ein paar Türen, die das Modell pro Konto verschlossen hielt.
- Telegram-Mini-Apps. Eine einzige Bot-Identität lässt uns eine Web-App-Adresse
t.me/VyneronAIBot/appanhängen und Nutzer die ganze PWA mit einem Tipp aus Telegram öffnen lassen, dazu teilbare Direktlinks zu bestimmten Aufgaben und Notizen erzeugen. Das ist Arbeit nach dem Start: Sie skaliert mit der Nutzerbasis und zahlt sich später mehr aus. - Inline-Modus.
@VyneronAIBot Rechnung suchenaus jedem anderen Telegram-Chat, mit Ergebnissen inline. Der Platz dafür liegt hinter derselben geteilten Identität. - Smarter Willkommensablauf. Mit einem Bot können wir die allererste
/start-Antwort für alle Nutzer auf einmal verbessern: Textänderungen, Befehlsvorschläge, Spracherkennung überfrom.language_code.
Aber vor all dem ist die nützlichste Folge die kleinste: die Reibung bei null halten. Der Gewinn war nicht „wir haben einen geteilten Bot ausgeliefert". Der Gewinn war, dass jemand jetzt in unter einer Minute von der Anmeldung zu einer funktionierenden Telegram-Aufgabe kommt, ohne ein einziges Entwickler-Ritual, und dabei eine Web-Hauptoberfläche behält, der es egal ist, ob er den Bot je öffnet.
Diese Art Arbeit ist unsichtbar, wenn sie landet, was genau das Ziel ist.
Vyneron ist ein KI-Produktivitäts-Arbeitsbereich, gebaut für Telegram, mit eingebautem Wissen über Feiertage in über 250 Ländern, BYOK-Preisen und OCR für Fotos und Dateien. Die Web-App ist die Hauptoberfläche; Telegram ist optional. Probier Vyneron kostenlos aus oder schau dir die Studie zu Telegram-Aufgabenbots für den Kontext des Ökosystems an.