Chat with the world in your native language on Telegram. Receive β translate β reply β translate. Fully automatic.
Website Β· Illustrated setup guide Β· δΈζζζ‘£
Customers message your personal Telegram account in any language. LingoDesk (via Telegram Business) translates every message into your language and drops it into a dedicated topic in your private console group β one topic per contact. You reply in your language; it's translated back, previewed for your confirmation, and sent as you. The other side never sees a bot.
- Inbound: auto-translated bilingual cards per contact topic; sticker/emoji recognition; photos, voice, documents and video forwarded into the topic and archived locally
- Outbound: type in your language β translated β preview β sent from your own account on confirmation; send files directly too
- Robust: Claude as the primary engine with optional OpenAI fallback;
business_connection_idauto-refreshed and persisted; per-contact language lock; topics auto-archive after 7 idle days and revive on new messages - Commands:
/lang <code>to correct a contact's language,/helpfor the list
- Cloud-hosted (default β no server, no code): do the Telegram-side setup from your phone and send us your bot token; we run everything, translation engine included. Follow the illustrated setup guide (~10 minutes). Free during beta.
- Self-host β free and open source, quick start below.
- Telegram Premium (Telegram Business relay is Premium-only β hard requirement for both modes)
- Node.js β₯ 20 (or Docker)
- An Anthropic API key (plus an optional OpenAI key as fallback)
- Create a bot with @BotFather (
/newbot), then in Bot Settings turn Business Mode on and Group Privacy off. - Phone β Settings β Telegram Business β Chatbots β link your bot with the Reply to messages permission.
- Create a group with the bot, enable Topics, promote the bot to admin with Manage Topics.
- Then:
git clone https://github.com/sanxiaozi/lingodesk.git
cd lingodesk
npm install
cp .env.example .env # only BOT_TOKEN and ANTHROPIC_API_KEY are required
npm run db:push # initialize SQLite (first run only)
npm run start # or: npm run dev (hot reload)- Send
/bindin your console group β the group ID and your user ID are detected automatically, nothing to look up.
Stuck anywhere? The illustrated guide covers every screen and every known pitfall.
Docker (recommended):
git clone https://github.com/sanxiaozi/lingodesk.git && cd lingodesk
cp .env.example .env # fill in the four required values
docker compose up -d --build
docker compose logs -f # watch the startup bannerDatabase and media archives persist in ./data and ./storage on the host.
Bare Node with pm2:
pm2 start "npm run start" --name lingodesk
pm2 save && pm2 startup
β οΈ One bot token = one running instance globally, or Telegram answers409 Conflict.
BUSINESS_PEER_USAGE_MISSING: a Telegram Business rule β the bot can only reply to contacts who messaged you recently; it cannot initiate to long-idle chats. Ask the contact to send anything to reactivate, or reply manually from your phone that once (your draft is kept).
See PLAN.md: M0 single-tenant MVP (current) β M1 multi-tenant SaaS β M2 billing & hosted service.