How BabelBot translates messages
Learn when BabelBot translates Discord messages automatically, when it skips, and how quotas and bridges behave.
This page explains how BabelBot behaves. Use it when a translation is missing, when output feels noisy, or when you want to know what counts toward your plan. For step-by-step fixes, see Troubleshooting. For plan numbers, see Billing and Limits.
End-to-end pipeline
When someone posts in an enabled guild text channel, BabelBot runs through roughly this sequence:
- Eligibility — Is the server on, the channel allowed, and the message worth translating?
- Bridge routing — If the channel is part of a bridge, delivery may go to a paired channel instead of (or as well as) local target languages.
- Attachment policy — Images and other attachments follow different rules than plain text (paid media translation for images).
- Quota — AI-backed work checks your plan’s AI translation allowance.
- Provider — Plain text may use AI (OpenRouter) or, on eligible tiers after AI quota is used, the in-house engine (LibreTranslate).
- Translation — One run per target language (or bridge destination language).
- Post-validation — Drop results that are empty or already in the target language.
- Delivery — Post as channel replies or inside a translation thread, per your reply preference.
- Usage — Record quota only when a translation is actually posted.
Usage does not increase when BabelBot skips a message or drops output after translation.
When messages are skipped
BabelBot does not call a translator when:
- The server master switch is off
- The channel is on the server’s disabled-channel list (see Dashboard Guide)
- The author is a bot — except native Discord followed-announcement crossposts (see below)
- The author is on the server’s ignored-users list
- The message is not in a guild channel (automatic flow is guild-only)
- Content is not translatable: whitespace-only, link-only without attachments, UUIDs/snowflakes, or similar non-linguistic tokens
- Attachments are present but media translation is off or the plan does not allow it (image-only messages on free tier)
- AI quota is exhausted and no fallback applies (for example attachments that require AI)
BabelBot may run translation but not post when:
- Detected source language already matches the target
- Output is empty or a duplicate of another target for the same message
“Missing” translations are often correct skips. Compare the message to the lists above before assuming a bug.
Reply mode vs thread mode
| Scenario | Reply in channel | Reply in threads |
|---|---|---|
| One target language | One reply under the message | One thread with the translation |
| Multiple target languages | Multiple replies in the channel | One thread containing all translations |
Controlling noise
Multiple target languages in reply mode multiply visible bot messages. Thread mode groups translations so the main channel stays readable.
In thread mode you can configure thread retention (days until BabelBot deletes its translation threads). That control lives under Settings → Reply preference in the dashboard.
AI translation vs basic (in-house) text
| Kind | Engine | Quota |
|---|---|---|
| AI translation | OpenRouter (default model configured for BabelBot) | Counts toward your plan’s AI translation allowance |
| Basic text translation | In-house LibreTranslate-backed engine | Unlimited on tiers that allow fallback after AI quota is used |
On Free, Pro, and Ultra, when AI quota for the period is exhausted, plain text without attachments can still translate via the in-house engine. Flag reactions, context menus, and attachment or image translation still require AI capacity.
Legacy Ultra and Lifetime tiers treat AI translations as unlimited.
Details and exact limits: Billing and Limits.
Bridges
Bridges connect channels so messages in one language channel appear in another:
- Pair bridge — Two channels, two languages, traffic both ways
- Hub bridge — One hub channel plus multiple spoke channels (same bridge UI in the dashboard)
When a bridge matches, BabelBot infers source language from the channel where the message was sent and delivers translated (or link-only) content to the paired destination via webhooks. Quota and skip rules still apply.
Followed announcements
Some servers Follow announcement channels from other guilds. Discord marks those crossposts in ways BabelBot recognizes.
When a message qualifies as a followed announcement, BabelBot may translate it even though the author is a bot or webhook. Detection is limited to native crosspost patterns so random bot traffic is not translated.
There is no separate dashboard toggle for this today; behavior follows Discord’s message flags. Output uses the same reply or thread mode as the rest of the server.
Flag reaction translations
When Allow flag reactions is on (Settings), reacting with a supported country-flag emoji translates that message to the associated language.
- Uses the AI provider only
- Counts toward AI quota
- Respects disabled channels and ignored users
- Honors reply vs thread preference
Context menus and DMs
Translate Text and Detect Language (right-click a message) use AI. They work in guild channels and, with user install, in DMs and private channels. They do not replace server-wide automatic translation settings.
Summary
- Skips are usually policy, not outages — bots, non-text content, disabled channels, and quota boundaries are the common causes.
- Thread mode and fewer target languages reduce noise.
- Bridges change where output appears, not whether eligibility rules exist.
- Only posted translations consume AI quota.
Next: Dashboard Guide for how to change settings, or Troubleshooting if behavior still does not match this page.