Telegram Portal Delta Chat Portal

Stickers and GIFs that survive the jump to Delta Chat.

Pair once with a short code. Then send a sticker on Telegram — it shows up in Delta Chat. Send it back the other way. No ugly filenames. No “from Telegram” caption.

v0.4.1

Portal branding poster: dark void with the product mark

Hold on.

A public bot means you trust whoever runs the box. They can see pairing data and whatever you bridge. Delta Chat encryption does not hide that from Portal. Better to run your own.

What you can send

After you pair, this goes both ways. We keep filenames boring on purpose — no “from Telegram.”

Both ways

  • Stickers

    The still ones. They land as a sticker or a picture.

  • Moving stickers

    Telegram’s animated ones. You get a file, or a GIF if the converter is installed.

  • Video stickers

    The short WEBM loops. They show up as video.

  • GIFs

    GIFs and Telegram animations (often MP4). They play as GIF or video.

  • Custom emoji

    Those premium stickers-in-text. They come through as stickers.

  • Text, photos, short clips

    Normal chat stuff, same both ways. Long videos stay on their side — we cap duration.

Mode 1 — Tunnel

A tunnel: you and the portal, one chat

Everything you send the portal bot lands in one Delta Chat. Don’t use a public host unless you’re fine with that person seeing what you send. You can also start from Delta Chat with t.me/…?start=CODE. Pairing docs.

  1. 01

    Open the Telegram bot

    Message @tgdeltabridgebot and send /start in a private chat.

  2. 02

    Open the Delta Chat invite

    The bot replies with an invite QR/link and a short pairing code (about 30 minutes).

  3. 03

    Send the code on Delta Chat

    Accept the chat, send only the code. The pair becomes active: your Telegram user and that Delta Chat.

  4. 04

    Send media either way

    Stickers, GIFs, text, images, short video. Filenames stay neutral; source captions are stripped.

Mode 2 — Persona

Persona

They write your Telegram bot. You see them as people in Delta Chat.

Mode 1 is the tunnel. Mode 2 is Persona: your bot, their faces.

Pairing dumps everything into one chat with the portal. Persona is the other product: you connect a bot you made with BotFather. Friends stay out of a shared pile. Each Telegram person becomes a ghost — a real Delta Chat account with their name and photo — and opens a normal 1:1 with you. What you type there goes out as your bot.

Just me

You talk to the portal bot. Everything lands in one Delta Chat. Good for “my stickers, my chat.”

My friends, as themselves

They talk to your bot. On Delta Chat Alice looks like Alice, Bob like Bob. Same person later? Same ghost, same chat.

Follow one message

Top to bottom. Four hops. That’s the whole trick.

  1. 1 · they write

    Alice DMs your bot

    She never opens Delta Chat. She only knows the Telegram bot you published.

  2. 2 · your bot

    The program is listening on your bot

    You registered the BotFather token with /pair-bot on the portal (after you /paired yourself).

  3. 3 · a ghost is born

    One DC account per Telegram id

    Missing? Create with PERSONA_ACCOUNT_QR, copy name and photo. Exists? Reuse. Not the same table as personal pairs.

  4. 4 · you read and reply

    Normal 1:1 on Delta Chat

    No “via Telegram” label. Your reply goes back out through the bot. Telegram cannot puppet Alice as Alice.

You only set this up once

mode: persona or both. Pair the portal first so it has your Delta Chat identity. Then in a private chat: /pair-bot <TOKEN>. That token lives in the database on that computer.

Groups if you want them

Turn on persona.allow_groups, add the bot, turn Group Privacy off in BotFather. The group shows up as TG: … with each speaker as their ghost. Your replies still leave as the bot.

Whoever runs the box is the bot

That machine holds the token and the ghost keys. Don’t /pair-bot on a public instance you don’t run. Run it yourself.

Commands: /bots, /unpair-bot. persona docs.

Best: run it on your machine

That’s the version we mean when we say “use this.” One Go binary, deltachat-rpc-server on PATH. You keep the token, the database, the keys.

  • The portal binary (build it, or download a GitHub release)
  • deltachat-rpc-server on PATH and a Telegram BotFather token
  • Chatmail / Delta Chat provider (e.g. nine.testrun.org for tests)
  • Optional SOCKS5 / HTTP proxies

Self-host walkthrough · GitHub

tar -xzf portal_*.tar.gz
chmod +x portal
./portal --version

# config.yml ← config.example.yml
# .env  TELEGRAM_BOT_TOKEN=…
#       PERSONA_ACCOUNT_QR=…

./portal --config config.yml init \
  dcaccount:nine.testrun.org
./portal --config config.yml serve
Download latest