# Manage BabelBot from an AI assistant BabelBot can connect to AI apps through MCP (the connection type shown as **AI assistant (MCP)** in the dashboard). Once connected, you can ask your assistant to check your setup, change settings, check usage, or run a server checkup. Your assistant can make real changes. Review each requested action before you approve it. ## Before you connect [#before-you-connect] You need: * A Discord account with **Manage Server** on each server you want to manage * BabelBot installed on those servers * An AI app that supports remote MCP servers over HTTP with OAuth sign-in BabelBot applies the same permissions and plan limits as the dashboard. An AI app cannot skip language limits, paid feature checks, or Discord permissions. ## Copy your BabelBot server address [#copy-your-babelbot-server-address] 1. Sign in to the [BabelBot dashboard](https://app.babelbot.xyz/login). 2. Open **Integrations**, then **AI assistant (MCP)**. 3. Under **Server address**, select **Copy address**. Paste that address only into an AI app you trust. The connection uses your Discord sign-in instead of credentials you paste into the app. When the app connects, it opens BabelBot's sign-in page in your browser so you can approve access. ## Connect your AI app [#connect-your-ai-app] App menus change over time. Use the BabelBot dashboard for the server address. Then follow your app's current MCP instructions if a label below has moved. ### Claude and Claude Desktop [#claude-and-claude-desktop] 1. Open **Connectors** in Claude or Claude Desktop. 2. Add a custom web connector and paste the BabelBot server address. 3. Select **Connect**, then complete the Discord sign-in. 4. Enable the BabelBot connector in the conversation where you want to use it. Claude Team and Enterprise workspaces require an owner to add the connector before members can connect it. See [Claude's custom connector guide](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp) for the current plan and workspace steps. ### Claude Code [#claude-code] Run this command with the server address you copied: ```bash claude mcp add --transport http babelbot https://app.babelbot.xyz/api/mcp ``` Start Claude Code. Enter `/mcp`. Choose BabelBot. Complete the Discord sign-in in your browser. The command adds BabelBot to the current project by default. Add `--scope user` if you want it available in every project. See [Claude Code's MCP guide](https://code.claude.com/docs/en/mcp) for authentication and scope details. ### Cursor [#cursor] Use **Add to Cursor** on the BabelBot integrations page, or add a server from Cursor's MCP settings. Choose **Streamable HTTP**. Paste the server address. Complete the OAuth sign-in when Cursor prompts you. See [Cursor's MCP guide](https://cursor.com/docs/mcp) for the current configuration options. ### VS Code [#vs-code] Use **Add to VS Code** on the BabelBot integrations page, or run **MCP: Add Server** from the Command Palette. Choose **HTTP**. Paste the server address. Decide whether the connection belongs in your user profile or the current workspace. Complete the browser sign-in when prompted. See [VS Code's MCP server guide](https://code.visualstudio.com/docs/agent-customization/mcp-servers) for the current setup and troubleshooting steps. ### ChatGPT [#chatgpt] ChatGPT uses custom MCP apps for this connection. Enable developer mode. Create an app with the BabelBot server address. Scan its tools. Complete the OAuth prompt. On a workspace plan, an admin or authorized developer may need to create and approve the app. OpenAI currently provides full read and write MCP access on ChatGPT web for Business, Enterprise, and Edu workspaces. Pro accounts can connect custom MCP apps with read and fetch access, but cannot use BabelBot's tools that change settings. Check [OpenAI's developer mode guide](https://help.openai.com/en/articles/12584461-developer-mode-apps-and-full-mcp-connectors-in-chatgpt-beta) before setup because availability and workspace controls can change. ### Other MCP apps [#other-mcp-apps] Look for **MCP**, **Connectors**, or **Integrations** in the app. Add a remote **Streamable HTTP** server. Paste the BabelBot server address. Complete the OAuth sign-in. Apps that support only local command-based servers cannot connect to BabelBot's remote server. ## What your assistant can view and change [#what-your-assistant-can-view-and-change] After you connect, you can ask your assistant to: * List the Discord servers you can manage and read their BabelBot settings * Add or remove target languages and custom words * Turn translation on or off for a server or channel * Change reply mode and reply style * Create, update, reorder, or remove channel rules * Ignore or stop ignoring a member's messages * Check the plan, remaining translations, and 30-day usage * Run a server checkup that reviews settings and usage for common problems Ask the assistant to show the current settings before changing them. For a larger update, make one change at a time and confirm the result in the [dashboard](https://app.babelbot.xyz/login). Successful changes from the assistant appear in **Audit logs** near the bottom of the sidebar for that server. ## Permissions and approval [#permissions-and-approval] The connection acts as your BabelBot account: * It can reach only servers where your Discord account has **Manage Server**. * Every change goes through the same plan checks as a dashboard change. * Your AI app may ask you to approve a tool before it reads data or changes a setting. * BabelBot records the connected app so you can revoke its access later. Review tool names and requested changes before approval. Do not approve a write action if the assistant's summary does not match what you asked for. ## Disconnect an app [#disconnect-an-app] 1. Open **Integrations**, then **AI assistant (MCP)** in the BabelBot dashboard. 2. Find the app under **Connected AI apps**. 3. Select **Disconnect** and confirm. BabelBot revokes that app's access as soon as you confirm. The app may still keep its saved server configuration, so remove BabelBot from the app's own MCP or connector settings too. You can reconnect through the same sign-in flow. ## Troubleshooting [#troubleshooting] ### The sign-in page does not open [#the-sign-in-page-does-not-open] Confirm that you added the address as a remote HTTP server, not a local command. Open any authorization URL the app shows you. Allow browser pop-ups. Retry the connection. Claude Code users can enter `/mcp` to start sign-in again. If the browser does not open, copy the authorization URL into your browser. ### The assistant cannot find my server [#the-assistant-cannot-find-my-server] Confirm that BabelBot is installed and your Discord account has **Manage Server** on that server. Sign in to the dashboard with the same Discord account and check that the server appears there. ### The assistant connects but shows no BabelBot tools [#the-assistant-connects-but-shows-no-babelbot-tools] Copy the server address again and compare it with the saved URL. Then restart or refresh the MCP server in your app. In ChatGPT, scan the app's tools again. In VS Code, run **MCP: List Servers** and inspect the BabelBot connection output. ### A setting change is refused [#a-setting-change-is-refused] Read the error returned by BabelBot. The server may have reached a plan limit, the value may be invalid, or your Discord account may no longer have **Manage Server**. Try the same change in the dashboard to see the matching limit or permission message. ### ChatGPT can read settings but cannot change them [#chatgpt-can-read-settings-but-cannot-change-them] Your ChatGPT plan or workspace may allow only read and fetch tools. Full MCP write access is required to change BabelBot settings. Check the current availability in OpenAI's guide linked above. ### Reconnecting does not help [#reconnecting-does-not-help] Disconnect the app from BabelBot. Remove its saved BabelBot connection. Add it again. If it still fails, contact [BabelBot support](https://discord.gg/gjKmEnvkxx) with the AI app name, your server ID, the time of the attempt, and the error message. Do not send passwords, tokens, or authorization links. # BabelBot billing and translation limits This page lists plans and quotas. For checkout steps, open **Billing & upgrades** in the dashboard or run `/upgrade` in Discord. ## Plans and limits [#plans-and-limits] **Legacy Ultra** and **Founder Access** keep unlimited AI translations. Comparing server plans with personal subscriptions? See [BabelBot vs Talksy](/compare/babelbot-vs-talksy) for pricing, shared channel routes, and translation limits. ## What counts as AI translation [#what-counts-as-ai-translation] Action Counts toward AI quota Automatic translation posted with AI translation Yes Bridge delivery using AI Yes Editing text in a bridged message using AI Yes Attachment-only or sticker-only bridge mirroring without translation No Editing attachments or stickers in a bridged message without translating text No Flag reaction translation Yes Translate Text context menu Yes Plain text in a language supported by BabelBot's in-house translator after AI quota is exhausted, or after AI technical-error recovery for bridge text No Skipped messages (no post) No Voice chat translation (live voice calls on Ultra or Founder Access) No, separate from message AI quota Usage increases only when BabelBot **posts** a translation. It does not increase when BabelBot skips a message or posts a failure notice. Messages skipped by **Don't translate from** do not count toward usage. Reply style changes how a posted translation looks in Reply mode. It does not change AI quota or plan limits. **Replace the original** is available on every plan and follows the normal translation quota rules. Copying the original text into a replacement does not count as another translation. Splitting a long replacement into several messages does not add translation usage. BabelBot confirms delivery and records usage before it deletes the original. If Retry recovers and posts a missing language, it counts like any other posted automatic translation. Expired retry buttons, cooldown replies, failed retry notices, and source-language skips do not count. ## Free tier timeline [#free-tier-timeline] 1. New servers get a trial pool of 100 AI translations total. This pool does not reset when the calendar month changes. 2. An attributed top.gg vote adds a one-time +100 AI translations on Free. 3. BabelBot uses the trial first, then the one-time vote bonus, then 50 AI translations per calendar month (UTC). Only the monthly pool resets. 4. Plain text in supported target languages has no monthly limit. BabelBot uses AI while quota remains, then its in-house translator for plain text without attachments. Languages marked **AI only** in the dashboard need AI quota. Plain text bridge messages in supported languages can also use the in-house translator if AI has a technical error before returning a usable translation. The 50 AI translation allowance is not a 50-message cap. It limits AI work only; supported plain text continues without a monthly message limit. Translating PDFs up to 50 MB, images, supported video attachments, and supported audio files requires AI capacity and a paid plan with media translation enabled. Mirroring attachments and custom server stickers across bridges does not. **Voice chat translation** (live voice calls with `/voice start`) is on **Ultra** and **Founder Access** only. It does not use your normal message translation quota. ## In-house translation vs AI [#in-house-translation-vs-ai] Comparison AI translation BabelBot's in-house translator Quality / nuance Higher for slang, context, mixed content Good for straightforward sentences Availability Until monthly/trial AI cap (or unlimited tier) After the AI cap on Free, Pro, and Ultra for supported plain text without attachments; supported plain text bridge recovery after AI technical errors Attachments Required to translate attachment content Not used to translate attachment content ## How to upgrade or manage subscription [#how-to-upgrade-or-manage-subscription] Change plan or manage your subscription: 1. Open Dashboard → **Billing & upgrades** for the server. 2. Or run `/upgrade` in Discord and follow the billing link. 3. After checkout, confirm the new limits on **Overview**. For an active paid subscription, the account that completed checkout opens the customer portal, views invoices, changes plan, or cancels. Other server managers can still configure the server. If a canceled monthly subscription has ended, BabelBot treats the server as Free again so a current server manager can start a new checkout. **Founder Access** uses a one-time payment for one server. Your first transfer is available immediately. The verified purchaser can move it to an eligible server they manage. Legacy access without a verified purchaser can only move to a server the person starting the transfer owns. After a transfer, you must wait 90 days before moving it again. We email the verified purchaser with the old server, new server, who started the move, and a support link in case they did not expect it ([Dashboard Guide](/docs/dashboard)). ## When to upgrade [#when-to-upgrade] Free fits when: * You need up to 2 target languages * You mainly need text chat in languages without the **AI only** label (AI while quota lasts, then BabelBot's in-house translator) * You do not need media translation or many bridges Choose **Pro** when: * You need up to 5 target languages or bridge connections * You want **media translation** on supported content * You want **custom words** for server names, brands, game terms, slang, or untranslated terms (25 words; AI translation only) * AI quota of 5,000 messages per month matches your volume Choose **Ultra** when: * You translate chat every day across many languages * You need up to 10 languages and unlimited bridge connections, with up to 25 spokes in each hub * You want more **custom words** for terminology across many languages or communities (100 words; AI translation only) * 25,000 AI translations per month is the right ceiling * You want **voice chat translation** for live multilingual voice calls Choose **Founder Access** when: * You want a one-time purchase with unlimited AI translations * You want 100 **custom words** and voice chat translation without a monthly subscription ## If you approach a limit [#if-you-approach-a-limit] The server **Overview** estimates how much of your current allowance you may have left at month end. On Free, the trial and one-time vote bonus are used before the monthly pool. When recent usage suggests the allowance may run out sooner, it shows an estimated date. The estimate uses up to seven completed UTC days and only appears after at least three completed days are available in the current UTC month. BabelBot also posts its existing in-Discord notices when usage crosses 75%, 90%, and the full allowance. The Overview estimate does not send email or direct-message alerts. 1. Remove low-priority **target languages**. 2. Tighten **channel rules** so fewer channels auto-translate. 3. Turn off **flag reactions** if they are optional. 4. Upgrade before busy events (launches, tournaments, AMAs). ## Related pages [#related-pages] * [How BabelBot Works](/docs/how-babelbot-works): how skips and the in-house translator affect quota * [Troubleshooting](/docs/troubleshooting): quota exceeded and billing errors * [FAQ](/docs/faq): short billing answers # BabelBot Discord translator command reference BabelBot does not use Discord commands for server configuration. Use the [dashboard](https://app.babelbot.xyz/login) to manage settings, bridges, and billing. A connected [AI assistant](/docs/ai-assistant-integrations) can also manage languages, server and channel settings, channel rules, and ignored users. Discord still provides admin links, a billing summary, and member translation shortcuts. ## Permission summary [#permission-summary] Command / menu Manage Server required Works in /help Yes Server channels only /dashboard Yes Server channels only /upgrade Yes Server channels only /set-context-language No Server, DM, private channel (with user install) Translate Text (message menu) No Server, DM, private channel (with user install) Detect Language (message menu) No Same as above /voice start, /voice stop, /voice status No Server channels (Ultra or Founder Access; see [Voice chat translation](/docs/voice-chat-translation) ) BabelBot supports **guild install** and **user install**. [Install BabelBot for your Discord account](https://discord.com/oauth2/authorize?client_id=1345392991413735434\&integration_type=1\&scope=applications.commands) to use context menus and `/set-context-language` in DMs, private channels, and servers where BabelBot is not installed. Automatic channel translation and admin commands require a server install. ## Slash commands [#slash-commands] ### `/help` [#help] Field Value Permission Manage Server Behavior Explains that server settings live in the dashboard. Includes buttons for documentation and dashboard login. ### `/dashboard` [#dashboard] Field Value Permission Manage Server Behavior Private link (only you can see it) to{" "} {`https://app.babelbot.xyz/server/{guildId}`}. Signs in with Discord when needed. Use the dashboard to edit target languages, reply mode and style, bridges, channel rules, media translation, voice chat translation, flag reactions, and billing. ### `/upgrade` [#upgrade] Field Value Permission Manage Server Behavior Private embed (only you can see it) with current plan, limits, and a link to{" "} Billing & upgrades ### `/set-context-language` [#set-context-language] Field Value Permission None Option language (required, autocomplete) Behavior Stores the member's default target language for Translate Text If you have not set a language, **Translate Text** uses your Discord language setting when it can. BabelBot keeps your saved target language for 180 days after you set it or use **Translate Text**. Each use starts a new 180-day period. ### `/voice start`, `/voice stop`, `/voice status` [#voice-start-voice-stop-voice-status] Live voice call translation. Available on **Ultra** and **Founder Access** when an admin has enabled it in the dashboard. | Subcommand | Who can use it | What it does | | ---------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | | `start` | Any member in a voice channel | BabelBot joins voice right away and posts translations in that channel's text chat, using the channel's configured target languages | | `stop` | Session starter, anyone in that voice channel, or server managers | Ends translation and BabelBot leaves voice | | `status` | Anyone | Shows whether a session is running and for how long | See [Voice chat translation](/docs/voice-chat-translation) for admin setup, member steps, limits, and tips. ## Message context menus [#message-context-menus] [Install BabelBot for your Discord account](https://discord.com/oauth2/authorize?client_id=1345392991413735434\&integration_type=1\&scope=applications.commands), then right-click a message and open **Apps**. The actions work in DMs, private channels, and servers where BabelBot is not installed. ### Translate Text [#translate-text] Field Value Permission None Behavior Private embed (only you can see it) with a translation into your context language Uses AI (counts toward server AI usage when used in a server) ### Detect Language [#detect-language] Field Value Permission None Behavior Private embed (only you can see it) with the detected language Uses Azure language detection ## Flag reaction shortcut (not a slash command) [#flag-reaction-shortcut-not-a-slash-command] React with a supported **country-flag emoji** on a message to translate it into that flag's language, when the server or matching channel rule allows flag reactions. The server setting decides whether BabelBot posts the result in the channel or sends it to the requester by DM. Supported PDFs, images, video attachments, and audio files are included when media translation is available for the server. This is not a slash command. See [How BabelBot Works](/docs/how-babelbot-works). ## What is not available as a Discord command [#what-is-not-available-as-a-discord-command] Use the dashboard or a connected AI assistant for settings that have no Discord commands: * Target languages: dashboard or AI assistant * Server and channel translation settings: dashboard or AI assistant * Channel rules: dashboard or AI assistant * Bridge creation and editing: dashboard * Ignored users: **Ignored users** in the sidebar in the dashboard, or AI assistant * Master server on/off: dashboard or AI assistant * Setting change history: **Audit logs** in the **Server** section of the dashboard sidebar ## Related pages [#related-pages] * [Dashboard Guide](/docs/dashboard): configure everything `/dashboard` links to * [AI assistant integrations](/docs/ai-assistant-integrations): connect an assistant to view or change settings * [Billing and Limits](/docs/billing-and-limits): plan caps * [FAQ](/docs/faq): member questions about context menus and opt-out # BabelBot dashboard setup and settings guide Use the dashboard at [app.babelbot.xyz](https://app.babelbot.xyz/login) to configure BabelBot for your server. Discord slash commands do not add languages or bridges. They open this dashboard and give members short translation shortcuts. For how translation behaves in Discord, read [How BabelBot Works](/docs/how-babelbot-works). ## Access the dashboard [#access-the-dashboard] **Goal:** Open settings for a server you manage. 1. Sign in at [app.babelbot.xyz/login](https://app.babelbot.xyz/login) with Discord. 2. Your Discord role must include **Manage Server** on that server. 3. BabelBot must be **Installed** on that server. Use **Invite** on the server list if it is missing. You can also run `/dashboard` in Discord. That command requires **Manage Server**. ## Review setting changes [#review-setting-changes] **Goal:** Check what changed, who made the change, and when it happened. 1. Select a server in the dashboard. 2. Open **Audit logs** near the bottom of the sidebar. 3. Use **Filter by person** or **Filter by action** to narrow the retained history. The person filter lists only accounts with recorded changes. 4. Open an entry to compare the setting before and after the change. Use **Clear filters** to return to all changes. The page shows successful setting changes made in the dashboard or by a connected AI assistant. It also shows automatic plan-limit changes and bridge cleanup after a linked Discord channel is deleted. Dashboard changes show the account name and profile picture when available. New assistant changes also show the connected app’s name and a recognized app icon when available. Older assistant entries keep the **AI assistant** label and a generic icon. Support changes are labeled **BabelBot support**. Automatic changes are labeled **BabelBot**. Collection changes show stable item IDs without exposing custom-word text, bot profile content, or bridge webhook credentials. The page shows up to 500 committed entries from the last 90 days. History starts with this release. Failed and denied attempts stay in internal diagnostics because they did not change the server settings. Audit logs cover server setting changes. Billing lifecycle events and message translation traces use separate operational records and do not appear on this page. ## Turn translation on or off for the server [#turn-translation-on-or-off-for-the-server] **Goal:** Stop or start all automatic translation without removing the bot. 1. Open the server, then open **Overview**. 2. Toggle **Translations**. When **Translations** is off, bridges and automatic message translation do not run. Context menus and slash commands may still work. ## Fix channel permission warnings [#fix-channel-permission-warnings] **Goal:** Restore delivery when Discord blocks BabelBot in a channel. 1. Open the server, then open **Overview**. 2. If a permission warning lists a channel, open Discord channel permissions for that channel. 3. Grant BabelBot the permissions named in the warning. If it lists **Remove Timeout**, ask a server moderator to remove BabelBot's timeout, or wait for it to expire. 4. Post a short test message in that channel. The warning clears after BabelBot successfully delivers a translation there. The dashboard never shows message content or webhook secrets in these warnings. ## Set target languages [#set-target-languages] **Goal:** Choose which languages automatic translation produces. 1. Go to **Target languages** in the sidebar. 2. Add the languages your community needs. 3. Stay within your plan's language count. See [Billing and Limits](/docs/billing-and-limits). Each extra target language adds more translated output per message. Start with a small set. Add more when usage is stable. Languages with an **AI only** label need AI quota. Languages without this label can use BabelBot's in-house translator after AI quota runs out. The same label appears during onboarding, in channel rules, and in bridge language selection. ## Set up custom words [#set-up-custom-words] **Goal:** Control how BabelBot translates specific words. Use this for your server name, game terms (for example "gank" or "nerf"), brand names, slang, or terms that should stay untranslated. 1. Go to **Custom words** in the sidebar. This needs **Pro** or higher. 2. Add a word: the **word**, the **language**, what to **translate it as**, and an optional **note** for your team. 3. Choose **All Languages** when the same custom word should apply to every target language. 4. BabelBot uses your translation when it translates into the selected language, or into any language for **All Languages** entries. Matching ignores capitalization and matches whole words or phrases. A rule for `cyn` matches `CYN`. A rule for `cat` does not match `catalog`. BabelBot keeps the exact spelling and capitalization from **Translate it as**. It leaves code and web addresses unchanged. **Examples:** * Keep your server tag the same in every language. * Map a product codename to the official name. * Set how a game ability should read in Spanish. * Leave an acronym untranslated. Custom words work only with **AI translation**. When a message includes one of your custom words, BabelBot always uses AI for that message. **Pro** servers get 25 custom words. **Ultra**, **Legacy Ultra**, and **Founder Access** get 100. Notes are reminders for your team. The bot does not follow them. See [Billing and Limits](/docs/billing-and-limits) for the per-plan counts. ## Skip automatic translation from source languages [#skip-automatic-translation-from-source-languages] **Goal:** Stop BabelBot from translating messages that were written in a language your server already understands. 1. Go to **Skip languages** in the sidebar. 2. Add one or more source languages to skip. 3. Keep those languages in **Target languages** if you still want other languages translated into them. For example, add **English** here when English chat should stay as written, while French, Spanish, or other languages still translate into English. Skips are silent and do not count toward usage. If BabelBot cannot detect the source language with confidence, it translates as usual. ## Translate messages from other bots [#translate-messages-from-other-bots] **Goal:** Let BabelBot translate messages and embeds posted by another bot, such as a rules or announcements bot. By default BabelBot ignores every other bot. To allow specific bots: 1. Go to **Other bots** in the sidebar. 2. Choose a bot from the list. The picker shows bots already in your server, with names and icons. You do not paste IDs. 3. Remove a bot any time with the **X** on its chip. Whitelisted bots are translated like a normal member, including text inside their embeds (titles, descriptions, fields, and footers). This works on every plan and counts the same as a normal translation. BabelBot always ignores its own messages and cannot be added to the list. Set **Target languages** as well, or there is nothing to translate into. ## Choose delivery mode, reply style, and thread retention [#choose-delivery-mode-reply-style-and-thread-retention] Choose where translations appear and whether BabelBot keeps the original message. 1. Open **Reply mode** in the sidebar. 2. Choose **Reply in channel**, **Reply in threads**, or **Replace the original**. 3. When **Reply in channel** is selected, choose **Reply style**: **Embed** (the default) or **Plain text**. 4. In thread mode, set **Thread retention** (days). `0` keeps threads until you delete them yourself. The default auto-deletes old BabelBot translation threads after a set number of days. **Plain text** shows only the translated text for one target language. With multiple target languages, each translation starts with a bold language label. If a plain-text reply is too long for Discord, BabelBot creates a translation thread or reuses the current thread, then splits the output into separate messages that stay below Discord's message limit. A channel rule can choose a different reply style for selected channels. Use **threads** for busy or multi-language servers. Use **reply** for quiet channels with one target language. Choose **Plain text** for a compact reply or **Embed** when members need the styled BabelBot card. ### Replace the original [#replace-the-original] Choose **Replace the original** for automatic text translations in a regular server text channel. * One target language, such as French: replace messages in other languages with French translations. French messages stay as they are. * Multiple target languages: show the original text first, then the translations. BabelBot uses the member's name and avatar, then deletes their original message. Long replacements use several messages in the same channel. If translation or delivery fails, the original stays. Selecting this mode does not grant Discord permissions. The dashboard shows a permission note and an **Update Discord permissions** link in server settings and channel rules. Use the link to grant **Manage Webhooks**, **Manage Messages**, **View Channel**, and **Read Message History**. Check channel overrides too, then send a test message. The note is guidance, not a live permission check. Members cannot edit the repost as their own message. The original message's link, timestamp, and reactions do not transfer. A channel rule can select a different delivery mode. Choose **Reply in channel** or **Reply in threads** to stop replacement. Attachments, stickers, polls, forwarded messages, announcements, bridges, and messages already inside threads keep their existing delivery behavior. Flag reactions and context-menu translations keep the original. In a voice channel's text chat, BabelBot replies in the channel even when **Reply in threads** is selected. When a message is already inside a Discord thread, BabelBot replies inside that thread. It does not create another translation thread. Forum and media posts follow the same rule because Discord treats each post as a thread. ## Turn flag reaction translation on or off [#turn-flag-reaction-translation-on-or-off] **Goal:** Allow or block country-flag emoji shortcuts on messages. 1. Open **Flag reactions** in the sidebar. 2. Toggle the setting on or off for the whole server. 3. Set **Translation visibility** to **Public** or **Private DM**. Flag translations use AI and count toward your usage. Channel rules can also allow or block flag reactions. A rule with **Translation status** off only stops automatic translation when **Flag reactions** stays on. With **Public** visibility, flag reactions inside a Discord thread follow the same rule as automatic translation. BabelBot replies inside the existing thread. It does not create another thread. With **Private DM** visibility, BabelBot sends the clean translation result only to the member who added the reaction. The source message and reaction remain visible in the channel. If Discord blocks the DM, BabelBot does not post the translation publicly. ## Enable media translation [#enable-media-translation] **Goal:** Translate supported PDFs, images, videos, and audio files on supported plans. 1. Open **Media translation** in the sidebar. 2. Turn on **Media translation**. This requires a paid plan. The free plan supports unlimited text translation for languages supported by BabelBot's in-house translator. Languages marked **AI only** need AI quota. Media translation needs Pro, Ultra, or Founder Access. ## Enable voice chat translation [#enable-voice-chat-translation] **Goal:** Let members translate live voice calls from Discord. This needs **Ultra** or **Founder Access**, at least **one target language** in server settings, and the right bot permissions in your voice channels. 1. Open **Voice chat** in the sidebar. 2. Turn on **Allow voice chat translation**. 3. Pick **Voice message style** (clean speaker messages or detailed embeds). The dashboard controls whether voice chat translation is allowed and how translated messages look. Members start and stop live sessions with `/voice start`, `/voice stop`, and `/voice status`. Each session starts right away and translates eligible speakers into the target languages set for that voice channel. If the only target matches the detected speaker language, BabelBot does not post a message for that speech. Voice chat translation is separate from **audio attachments** (voice notes and audio clips in text channels). For the full admin setup, member steps, and limits, see [Voice chat translation](/docs/voice-chat-translation). ## Configure channel rules [#configure-channel-rules] **Goal:** Exclude channels or set different behavior per channel in the dashboard. 1. Open **Channel rules** in the sidebar. 2. Add a rule, select channels, and override settings. You can turn translation off, set different target languages, change **Don't translate from**, reply mode, reply style for in-channel replies, flag reactions, or media translation where your plan allows. 3. Drag rules to change priority. **The first matching rule wins**. 4. Use **Preview a channel** to check the effective settings before you test a message. To keep moderation or log channels out of automatic translation, create a rule with **Translation status** off. You can still leave **Flag reactions** on in that rule for on-demand translation. Channels in a bridge still relay bridge messages when this setting is off. Remove the bridge if you want to stop traffic between linked channels. To translate English in one channel while the rest of the server skips English, add a rule. Set **Don't translate from** to an empty list. ## Create a channel bridge [#create-a-channel-bridge] **Goal:** Link two or more language-specific channels. 1. Open **Bridges** in the sidebar. 2. Create a **pair** (two channels) or **hub** (one main channel plus spokes). 3. Assign each channel its language. 4. Post test messages in both directions. Each two-channel bridge counts as one bridge toward your plan limit. In a hub bridge, each spoke counts as one bridge. A hub can have up to 25 spokes. A channel cannot belong to overlapping bridges. If you delete a linked Discord channel, BabelBot removes the affected pair or spoke from your bridge settings. Deleting a hub, or the only remaining spoke, removes the whole hub bridge. Bridge messages that contain only numbers, emoji, timestamps, punctuation, or similar content are mirrored unchanged. Attached images and supported videos use Discord's normal preview. Spoilered images and supported videos stay hidden in linked channels until a member opens them. Other files appear as labeled cards that link to the original Discord attachment. Custom server stickers also cross linked channels. PNG, APNG, and GIF stickers keep their preview. Other formats stay available through an original link. You do not need to enable **Media translation** for mirroring. BabelBot only uses AI usage when it translates message text or supported attachment content. New bridge message links have no time limit. Links created before this update keep their original expiry, normally 30 days after creation. Editing a message does not extend that period. Expired links cannot be recovered. While a link exists, source edits update BabelBot's copies in linked channels. Messages that contain text follow the normal translation usage rules. Sticker-only messages and edits without text do not use AI usage. If you delete the original while bridge history is available, BabelBot removes its copies from the linked channels. If you delete it while BabelBot is translating, the copies will not appear later. If you delete only one linked copy, the original and the other copies stay in place. BabelBot does not recreate the copy you removed. Reactions added to any linked copy appear on the copies in the other channels while bridge history is available. Custom and animated emoji keep their image even when they belong to another server. Discord shows BabelBot as the reacting account on those copies. Remove the last matching member reaction to clear BabelBot's copied reactions. ## Manage billing and upgrades [#manage-billing-and-upgrades] **Goal:** See usage, change plan, or open the subscription portal. 1. Open **Billing & upgrades** in the sidebar. 2. Review usage, limits, and checkout options. For an active paid subscription, only the account that completed checkout can open the customer portal, view invoices, or change the subscription. Other server managers can still manage server settings. If a canceled monthly subscription has ended, any current server manager can start a new checkout. Run `/upgrade` in Discord for a quick plan summary and a link to the same billing page. ## Transfer Founder Access between servers [#transfer-founder-access-between-servers] **Goal:** Move Founder Access to another eligible server. 1. Open [Founder Access transfer](https://app.babelbot.xyz/servers/lifetime-transfer) from the dashboard sidebar when your account is eligible. 2. Follow the flow to move access from one installed server to another. Your first Founder Access transfer is available immediately. A verified purchaser can choose an eligible server they manage. For legacy access without a verified purchaser, the person starting the transfer must own the destination server. After a transfer, you must wait 90 days before moving it again. After the move, BabelBot emails the verified purchaser. The email lists the old server, new server, who started the transfer, and a support link. Transfers apply only to Founder Access and legacy one-time entitlements. They do not apply to monthly subscriptions. ## Ignored users [#ignored-users] **Goal:** Skip automatic translation for specific members (for example bots you cannot exclude another way). BabelBot skips messages from Discord user IDs on the server's ignored users list. Open **Ignored users** in the sidebar, then add or remove the person's Discord user ID. Members cannot opt themselves out. A server manager must add their Discord user ID in Settings. ## Server overview at a glance [#server-overview-at-a-glance] Use **Overview** for: * Master translation toggle and suggested next steps * Plan, usage, and remaining AI capacity * 30-day activity (automatic, bridge, flag reaction) * Shortcuts into settings and billing ## Manage settings from an AI assistant [#manage-settings-from-an-ai-assistant] Open **Integrations**, then **AI assistant (MCP)** to connect Claude, ChatGPT, Cursor, VS Code, or another app with remote HTTP MCP and OAuth support. Copy the server address there, then follow the [AI assistant integrations guide](/docs/ai-assistant-integrations) for setup, permissions, and disconnecting an app. ## Common dashboard issues [#common-dashboard-issues] Confirm your role has **Manage Server** in Discord and that BabelBot is installed on that server. Make sure BabelBot can view channels in that server. Re-open settings after the bot has been online in the server. Retry from **Billing & upgrades**. If it continues, contact support with your server ID and the error you see. ## Related pages [#related-pages] * [Quick Start](/docs/quick-start): first-time setup * [AI assistant integrations](/docs/ai-assistant-integrations): connect an assistant to view or change settings * [Playbooks](/docs/playbooks): recommended combinations of these settings * [Command Reference](/docs/commands): what still works in Discord chat # BabelBot Discord translation FAQ Short answers for common admin questions. For full procedures, follow the linked guides. ## Setup and dashboard [#setup-and-dashboard] Check these items in order: * Server translation is on under **Overview** * The channel is not disabled * At least one target language is set * The author is not on the ignored list * The message has text or media BabelBot can translate See [How BabelBot Works](/docs/how-babelbot-works) and [Troubleshooting](/docs/troubleshooting). Open the server in the [dashboard](https://app.babelbot.xyz/login). Check **Overview**, the settings pages in the sidebar, and **Billing** or **Upgrade**. Use **Audit logs** near the bottom of the sidebar to review successful recent changes. Run `/help` in Discord for a short in-chat summary. No. Discord slash commands do not set languages, bridges, or channel rules. Use the dashboard for all three. You can also use a connected [AI assistant](/docs/ai-assistant-integrations) for languages and channel rules. Discord still keeps `/help`, `/dashboard`, `/upgrade`, `/voice`, member context menus, and `/set-context-language`. You need **Manage Server** on the server. BabelBot must also be installed on that server. Yes. A connected AI assistant can view and change settings for servers where your Discord account has **Manage Server**. The same plan limits still apply. To revoke access, open **Integrations**, then **AI assistant (MCP)** in the dashboard. Disconnect the app under **Connected AI apps**. See the [AI assistant integrations guide](/docs/ai-assistant-integrations). ## Behavior [#behavior] Pair and hub bridges work in both directions. BabelBot reads the source language from the channel where the message was posted. It then delivers to the linked destinations. Messages that need no translation arrive unchanged. That includes numbers, emoji, timestamps, and punctuation. Images and supported videos arrive with Discord's normal preview. Spoilered media stays hidden until a member opens it. Other files arrive as labeled links to the original attachment. Custom server stickers also cross linked channels. PNG, APNG, and GIF stickers keep their preview. Other formats stay available through an original link. Text posted with supported media stays with its translation. This works even when **Media translation** is off. It does not use AI quota. New bridge message links have no time limit. Links created before this update keep their original expiry, normally 30 days after creation. Editing a message does not extend that period. Expired links cannot be recovered. Edits update linked copies while those links exist. Reactions added to one copy appear on the others under BabelBot's account. Custom and animated emoji keep their image when they belong to another server. See [How BabelBot Works](/docs/how-babelbot-works#bridges) for edit limits and quota behavior. Use the **thread** reply preference. Use fewer target languages. Tighten channel rules. Details: [Troubleshooting](/docs/troubleshooting). Yes. Open **Reply mode**, choose **Reply in channel**, then choose **Plain text** under **Reply style**. One target language shows only the translated text. Multiple target languages use a bold language label before each translation. If the plain-text reply is too long for Discord, BabelBot creates a translation thread or reuses the current thread, then splits the output into separate messages that stay below Discord's message limit. Yes. Choose **Replace the original** in **Reply mode**. With one target language, BabelBot replaces messages in other languages with translations. With multiple targets, it puts the original text first and the translations below. BabelBot reposts with the member's name and avatar, then deletes the original. Members cannot edit the repost as their own message. This applies to automatic text translations in regular server text channels. If translation or delivery fails, the original stays. See the [delivery settings](/docs/dashboard#replace-the-original) for permissions and limits. **AI** translations count toward quota. They handle nuance, attachments, flags, context menus, custom words, and languages marked **AI only**. **BabelBot's in-house translator** covers supported plain text without a monthly limit. With quota left, text uses AI. Without it, supported text uses BabelBot's in-house translator. Plain text bridge messages in supported languages can also use the in-house translator when AI has a technical error. See [Billing and Limits](/docs/billing-and-limits). BabelBot posted what it could translate. One or more languages or attachments could not be translated. Click **Retry** on regular automatic message notices to try only the missing languages again. Retry can also appear on a **Translation failed** notice when every retryable target came back missing. Retry stays available for about 1 minute. A failed attempt to get the original message, translate, check quota, or post leaves the button available for another attempt until it expires. If the source message was already in one of your target languages, BabelBot skips that target quietly. Yes, when Discord marks a message as a native followed-announcement crosspost. There is no separate dashboard toggle. See [How BabelBot Works](/docs/how-babelbot-works). Yes. By default BabelBot ignores other bots. You can opt specific bots in under **Other bots** in the sidebar. Their messages, including text inside embeds, are then translated like a normal member. This works on every plan. BabelBot always ignores its own messages. See the [Dashboard Guide](/docs/dashboard). Compare the message to [How BabelBot Works](/docs/how-babelbot-works). Many gaps are valid skips. If docs and behavior disagree, contact support with IDs and timestamps. ## Members [#members] Right-click the message, then choose **Translate Text**. BabelBot uses your Discord language when it can. Run `/set-context-language` if you want to choose a different target language. No. Ask a server manager to add your Discord user ID under **Ignored users** in the sidebar. BabelBot will then skip your messages on that server. Flag reactions work when the server or matching channel rule allows them. A channel rule can turn automatic translation off while still allowing flag reactions. Reactions use AI quota. Media posts also need a paid plan with media translation enabled. Text posted with supported media is translated alongside the media result. Public flag translations use the selected reply style. When you use a flag inside a Discord thread, BabelBot replies inside that thread even when thread mode is selected. Join a voice channel. Run `/voice start`. Read translations in that voice channel's text chat. BabelBot joins instantly and translates eligible speakers into the channel's configured target languages. If the only target matches the detected speaker language, BabelBot does not post a message for that speech. Your server needs Ultra or Founder Access. An admin must turn the feature on first. See [Voice chat translation](/docs/voice-chat-translation). **Voice notes** are Discord voice messages posted in text channels. BabelBot can translate voice notes and supported audio files on paid plans with media translation enabled. **Voice chat translation** is for live calls. BabelBot listens in voice and posts text while the session runs. Voice chat needs Ultra or Founder Access. Yes, on paid plans with **Media translation** enabled. BabelBot translates supported PDFs, image attachments, video attachments, Discord voice notes, and common audio files in text channels. Written captions stay with media translations from automatic messages, linked channels, and flag reactions. Live voice chat translation is separate and needs Ultra or Founder Access. No. It does not count toward your server's normal AI message limit. ## Billing [#billing] Use dashboard **Billing & upgrades**. Or run `/upgrade` in Discord for a link and plan summary. For an active paid subscription, the account that completed checkout can open the customer portal, view invoices, change plan, or cancel. Other server managers can configure the server. If a canceled monthly subscription has ended, any current server manager can start a new checkout. After the 100 AI translations to start, any one-time top.gg bonus, and the monthly AI cap, features that need AI stop until the monthly pool resets or you upgrade. **Plain text** can still use BabelBot's in-house translator when its target language does not have an **AI only** label, so supported text stays unlimited. Translating AI-only languages, attachment content, and flag reactions still needs AI. Bridge attachment mirroring does not. See [Billing and Limits](/docs/billing-and-limits). Yes. You get a one-time +100 AI translations after an attributed top.gg vote. This is in addition to the normal free trial and monthly pool. Yes, via [Founder Access transfer](https://app.babelbot.xyz/servers/lifetime-transfer). Your first transfer is available immediately. A verified purchaser can choose an eligible server they manage. Legacy access without a verified purchaser can only move to a server the person starting the transfer owns. After a transfer, you must wait 90 days before moving it again. We email the verified purchaser with the transfer details and a support link in case they did not expect the move. See [Dashboard Guide](/docs/dashboard). ## Glossary (quick) [#glossary-quick] | Term | Meaning | | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | | **Target language** | Language BabelBot translates into | | **Don't translate from** | Source languages BabelBot silently skips for normal automatic messages | | **Bridge** | Linked channels that relay translated messages | | **AI translation** | Quota-metered translation for nuance, media, flags, and custom words | | **Custom words** | Server terminology rules on Pro and above, scoped to one language or All Languages (AI translation only); see [Dashboard Guide](/docs/dashboard) | | **In-house text translation** | BabelBot's in-house translator for plain text | | **Reply mode** | Translations as channel replies | | **Reply style** | Styled embeds or plain text for channel replies | | **Replace the original** | Automatic text translations reposted with the member's name and avatar, followed by deletion of the original | | **Thread mode** | Translations grouped in a new thread, or posted as replies when the message is already inside a Discord thread | | **Voice chat translation** | Live voice call translation in voice channel text chat, see [guide](/docs/voice-chat-translation) | | **Voice note** | Audio clip posted in a text channel | # How BabelBot translates Discord messages This page explains how BabelBot behaves. Use it when a translation is missing, when the channel feels noisy, or when you want to know what counts toward your plan. For step-by-step fixes, see [Troubleshooting](/docs/troubleshooting). For plan numbers, see [Billing and Limits](/docs/billing-and-limits). ## What happens when someone posts [#what-happens-when-someone-posts] When someone posts in a server text channel where BabelBot is on, BabelBot checks the message in this order: 1. Can it translate here? The server must be on, the channel must be allowed, and the message must be worth translating. 2. What text is included? BabelBot collects plain message text and text inside rich embeds (titles, descriptions, fields, and footers). That covers embeds from bots, such as a rules or announcement card. It does not cover the automatic preview Discord adds under a plain link. Embed translation works on every plan and counts the same as a normal translation. 3. Is this channel in a bridge? If yes, BabelBot may send the result to a linked channel instead of (or as well as) the local target languages. 4. Do attachments need special handling? Supported PDFs, images, videos, and audio follow different rules than plain text. Media translation is a paid feature on Pro and above. If a message has several supported images, BabelBot translates each image in order. Unsupported file types are not sent for media translation. For regular automatic messages, BabelBot can still post the text translation with a short partial notice when the media cannot be translated. 5. Is the source language blocked? For normal automatic messages, BabelBot can skip before using quota when the detected source language is on **Don't translate from**. 6. Is AI quota available? Features that need AI check your plan's remaining AI translations. 7. Which method applies? Plain text uses AI translation when quota is available. On Free, Pro, and Ultra, plain text in supported target languages can use BabelBot's in-house translator after AI quota is used. Languages marked **AI only** in the dashboard need AI quota. Plain text bridge messages in supported languages can also use the in-house translator if AI fails with a technical error before returning a usable translation. 8. Translate once per target. BabelBot runs one translation per target language (or per bridge destination language). 9. Drop unusable results. BabelBot drops results that are empty or already in the target language. 10. Deliver the translation. BabelBot posts as a channel reply, in a translation thread, or as a replacement based on your delivery setting. Replacement reposts an automatic text translation with the member's name and avatar, then deletes the original after confirming delivery. With multiple target languages, the repost includes the original text first. Reply style applies when channel replies are selected. 11. Record usage. BabelBot records quota only when a translation is actually posted. Usage does **not** increase when BabelBot skips a message or drops output after translation. ## Recent context for AI translation [#recent-context-for-ai-translation] Automatic AI translation can use up to five previous human text messages from the same channel or thread. That context helps with pronouns, slang, and unclear wording. BabelBot caps each of those messages at 200 grapheme clusters. It keeps this recent context for up to 15 minutes. BabelBot does not pull older Discord history. Recent message context applies only to normal automatic AI translations. Bridge translations and the in-house translator do not use it. BabelBot asks AI to translate only the current message. If the result appears to repeat recent context, BabelBot blocks that result and retries the current message once without recent context. ## When messages are skipped [#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](/docs/dashboard)) * The author is a bot, **except** native Discord followed-announcement crossposts (see below) or a bot you added to **Translate other bots** in the [Dashboard Guide](/docs/dashboard). BabelBot always ignores its own messages. * The author is on the server's ignored-users list * The message is not in a server channel (automatic translation only runs in servers) * A normal automatic message contains no translatable text, such as whitespace only, a link without attachments, a raw ID, or a message made only of custom or animated Discord emoji. Bridges still copy non-empty content unchanged. * A normal automatic message contains only attachments, but media translation is off or the plan does not allow it. Bridge attachment mirroring is exempt. * A normal automatic message is confidently detected as a language in **Don't translate from** * AI quota is exhausted and BabelBot's in-house translator cannot cover the work (for example, the target language has an **AI only** label or the message includes attachment content). Mirroring bridge attachments does not use AI. BabelBot may run translation but not post a translation when: * The message is already effectively in the target language (this stays silent). Messages with meaningful sentences in another language still go through translation. When BabelBot gets missing, empty, or duplicated output for target languages on a regular automatic message, it can add a **Retry** button. If some languages worked, the button appears on the **Partial translation** notice. If none worked, it appears on the **Translation failed** notice. Retry asks for the failed target languages only. It leaves out targets that match the source language. The button stays available for about 1 minute. If BabelBot asks you to wait, wait for the cooldown and click **Retry** again. A failed attempt to get the original message, translate, check quota, or post does not use up the retry, so the button remains available until it expires. Bridge translations do not get a retry button. Replacement attempts also keep the original without posting partial translations when a target is missing. When BabelBot started translating a regular automatic message but could not produce usable output for any target, it posts a short failure notice instead of staying silent. Retryable failure notices can include **Retry**. Failure notices do not count toward usage. Generic bridge translation failures stay silent in the source channel. "Missing" translations are often correct skips. Compare the message to the lists above before assuming a bug. ## Translation delivery [#translation-delivery] Scenario Reply in channel Reply in threads Replace the original One target language One reply under the message One thread with the translation A translation replaces the original when its language differs Multiple target languages One reply containing all translations One thread containing all translations A repost with the original text first, then translations Messages inside an existing thread Replies inside the thread Replies inside the thread Replies inside the thread, with the original kept If Discord rejects a reply because the original message was deleted or does not support replies, BabelBot posts the translation as a normal channel message instead. In thread mode, BabelBot also replies in the channel when Discord permissions prevent it from creating or posting in the translation thread. When **Reply in channel** is selected, **Reply style** controls the format. **Embed** is the default and uses a styled BabelBot message. **Plain text** shows only the translated text for one target language. With multiple target languages, each translation starts with a bold language label. If a plain-text reply is too long for Discord, BabelBot creates a translation thread or reuses the current thread, then splits the output into separate messages that stay below Discord's message limit. Multiple target languages add more translated sections to each result. In reply mode, long translations can move into a translation thread and split into more than one message so Discord accepts them. **Thread** mode groups translations so the main channel stays readable. In thread mode you can set **thread retention** (days until BabelBot deletes its translation threads). That control lives on the **Reply mode** page in the dashboard. In a voice channel's text chat, BabelBot replies in the channel even when **Reply in threads** is selected. When a message is already inside a Discord thread, BabelBot replies inside that thread. It does not create another translation thread. This applies to automatic and flag-reaction translations. Forum and media posts follow the same rule because Discord treats each post as a thread. When BabelBot posts a translation embed inside a Discord thread, the embed can include **Bad response**. Select it to open a private Discord form with a required problem description and an optional suggested correction. The form does not appear on channel fallbacks. Feedback records are scheduled for deletion 90 days after submission. See the [Translation feedback section of the Privacy Policy](/privacy#translation-feedback) for what BabelBot stores and how it is used. ## AI translation vs custom text translation [#ai-translation-vs-custom-text-translation] Kind What it uses Quota AI translation BabelBot's managed AI models Counts toward your plan's AI translation allowance In-house text translation BabelBot's in-house translator No monthly limit on Free, Pro, and Ultra for supported plain text after AI quota is used; also used for supported plain text bridge recovery when AI has a technical error On **Free**, **Pro**, and **Ultra**, when AI quota for the period is exhausted, **plain text without attachments** can still translate via BabelBot's in-house translator if the target language does not have an **AI only** label. Plain text bridge messages in supported languages can also use that translator when AI has a technical error before returning a usable translation. Flag reactions, context menus, custom words, AI-only languages, and media translation still require AI. **Legacy Ultra** and **Founder Access** tiers treat AI translations as unlimited. Details and exact limits: [Billing and Limits](/docs/billing-and-limits). ## Custom words (AI translation only) [#custom-words-ai-translation-only] On **Pro** and above you can set **custom words**: pick a word and tell BabelBot how to translate it into one language or **All Languages**. Use them for server names, game vocabulary, brand and product names, community slang, or terms that should stay untranslated. Custom words only work with AI. When a message uses one of your custom words, BabelBot always translates it with AI. It does **not** fall back to the in-house translator for that message. If your AI quota runs out, the normal quota behavior applies. Custom words work in automatic translation, bridges, flag reactions, the **Translate Text** context menu, and voice chat translation. Custom words apply to reply text, media captions, and speech transcribed from voice notes or audio files. Notes are just reminders for your team. The bot never follows them. See the [Dashboard Guide](/docs/dashboard) to set them up. ## Bridges [#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 treats the source language as the language of the channel where the message was sent. It delivers content to the linked channels. Text posted with supported media is translated alongside the media result. If BabelBot cannot produce usable translated text, it does not post a generic failure notice in the source channel or count the failed translation toward usage. Existing service outage notices may still appear. If BabelBot cannot send translated text to any linked destination, it still replies in the source channel. That reply names the affected channels and asks an admin to check permissions. Replies carried across linked channels show a compact preview and link to the matching Discord message. Text replies use the wording already posted in that channel. Replies to images, videos, and other files show the attachment filename or a simple attachment label instead of a temporary Discord URL. Replies to ordinary links keep the original URL. Older quotes from the reply chain are left out. If a member edits the source message, BabelBot updates the copies it posted in linked channels. Messages that contain text run through translation again and follow the same quota rules as a new bridge message. Adding, replacing, or removing attachments or stickers also updates the existing copies without posting duplicates. Edits to messages without text do not use AI quota. If a member deletes the source message, BabelBot removes the copies it posted in linked channels. Deleting the source while BabelBot is translating also stops copies from appearing after the source is gone. Reactions stay in sync while the bridge message links exist. React to any linked copy and BabelBot applies the same emoji to the copies in the other channels. Custom and animated emoji keep their image even when they belong to another server. Discord shows BabelBot as the reacting account on those copies. When members remove the last matching reaction, BabelBot removes its copied reactions. New bridge message links have no time limit. Links created before this update keep their original expiry, normally 30 days after creation. Editing a message does not extend that period. Expired links cannot be recovered. Edits and source deletions need an available link to the copies. If someone deletes only a linked copy, BabelBot leaves the source and other copies in place and does not recreate the deleted copy. Removing the bridge also stops later edits from crossing to those channels. Messages that need no translation, such as numbers, emoji, timestamps, or punctuation, are mirrored unchanged. This does not use translation quota. Images and supported videos are mirrored with their original Discord attachment URLs, so Discord shows its normal preview in the destination channel. BabelBot re-uploads spoilered images and supported videos with the spoiler setting intact, keeping them hidden until a member opens them. Other files use labeled cards that link to the original attachment. This works for pair and hub bridges even when **Media translation** is off. Mirroring does not use AI quota or add an AI description. When **Media translation** is on, supported attachments keep their normal translation behavior. Custom server stickers cross linked channels too. PNG, APNG, and GIF stickers keep their Discord preview. Lottie stickers and formats Discord cannot preview stay available through a link to the original sticker. Sticker-only messages and edits do not use AI quota. You can also forward a Discord message into a bridged channel. BabelBot labels it as a forwarded message, translates its text and rich cards, and copies its attachments and stickers. Discord does not send the original author with forwarded messages, so the bridge shows the member who forwarded it as the sender. Buttons and menus from the forwarded message are not copied. **Don't translate from** does not apply to bridge routes. Bridges already define their source and target language behavior. Channel rules with **Translation status** off stop normal automatic translations, but configured bridges in those channels keep relaying. Remove or disable the bridge when you want bridge traffic to stop. ## Followed announcements [#followed-announcements] Some servers **Follow** announcement channels from other servers. 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. BabelBot only does this for Discord's normal Follow crossposts, so random bot traffic is not translated. There is no separate dashboard toggle. Output uses the same delivery mode as the rest of the server. ## Flag reaction translations [#flag-reaction-translations] When **Allow flag reactions** is on (Settings), reacting with a supported country-flag emoji translates that message to the associated language. Server managers can choose **Public** delivery in the channel or **Private DM** delivery to the member who reacted. A blocked DM does not fall back to a public channel message. * Uses AI translation only * Counts toward AI quota * Includes supported PDFs, images, video attachments, and audio files when media translation is available for the server * Respects disabled channels and ignored users * Can stay on in a channel rule even when automatic translation is off * Supports PDF-only, image-only, video-only, audio-only, and media+caption posts when media translation is available for the server. Text posted with the media stays with the translated media result. * Honors reply or thread delivery for public translations. When Replace the original is selected, flag translations use replies and keep the original. Reply style still applies. * Ignores **Don't translate from** because the reaction is an explicit translation request ## Context menus and DMs [#context-menus-and-dms] **Translate Text** uses AI. **Detect Language** uses Azure language detection and reports Unknown when it cannot identify a language confidently. Both commands are available when you right-click a message. They work in server channels and, with user install, in DMs and private channels. They do not replace server-wide automatic translation settings. ## Voice chat translation [#voice-chat-translation] For **live voice calls**, BabelBot can join a voice channel, listen to speech, and post translated text in that channel's text chat. This is separate from **audio attachments** (voice notes and audio clips posted in text channels). * One active voice translation per server * Members start it with `/voice start` after an admin enables it on Ultra or Founder Access * Does not count toward your normal message translation quota Full guide with admin and member steps: [Voice chat translation](/docs/voice-chat-translation). ## Summary [#summary] * Skips are usually settings or message type, not outages. Bots, non-text content, disabled channels, and quota limits are the common causes. * Reply mode supports styled embeds or plain text. Long replies can move into a translation thread when Discord's message limit requires it. * **Thread** mode and fewer target languages reduce noise. * **Bridges** define their own channel route. A channel rule can stop normal automatic translations without stopping a configured bridge. * Only **posted** message translations consume AI quota (voice chat translation is separate). * **Voice chat translation** is live call transcription plus translation in voice channel text chat. Voice notes and audio files are attachment-based in text channels. Next: [Dashboard Guide](/docs/dashboard) for how to change settings, or [Troubleshooting](/docs/troubleshooting) if behavior still does not match this page. # BabelBot Discord translation documentation BabelBot translates Discord messages for multilingual communities. Server admins set languages, channels, and bridges in the [dashboard](https://app.babelbot.xyz/login). Members get translations as replies, threads, or **Replace the original**. In reply mode, admins can choose styled embeds or plain text. Members can also use flag reactions, message context menus, or live voice chat translation in voice calls. ## Features [#features] * Automatic translation of channel messages into your server's target languages * Translate on demand by reacting to a message with a flag emoji * **Translate Text** and **Detect Language** message context menus: right-click any message, no special permissions needed * `/set-context-language` to set your personal default translation language * Live **voice chat translation** for Discord voice calls with `/voice start`, `/voice stop`, and `/voice status` (Ultra and Founder Access) * **Channel bridges** that relay messages between language-specific channels as pairs or hubs * Per-channel rules to override target languages, reply mode, reply style, flag reactions, and translation status * Reply as a channel reply or in dedicated threads, with styled embeds or plain text for replies * **Custom words** (glossary) to control how brand names, server slang, and game terms translate (Pro, Ultra, and Founder Access) * Skip automatic translation for source languages your community already understands * Translate messages and embeds from other bots once you whitelist them * Media translation for supported PDFs, images, video, and audio files (paid plans) * User-installable app: translate anywhere on Discord, including DMs and servers where BabelBot is not installed * AI translation, with BabelBot's in-house translator for supported plain text after AI quota runs out * 30-day activity overview for admins * Per-server **Audit logs** for successful setting changes made in the dashboard, through a connected AI assistant, or automatically by BabelBot * Ignore list to skip automatic translation for specific members ## Plans [#plans] | Plan | Best for | | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Free** | Up to 2 target languages, 100 AI translations to start, optional one-time +100 top.gg bonus, then 50 AI translations/month; supported text stays unlimited | | **Pro** | Up to 5 languages and 5 bridges, media translation, 25 custom words, 5,000 AI translations/month | | **Ultra** | Up to 10 languages, unlimited bridge connections with up to 25 language channels per hub, 100 custom words, voice chat translation, 25,000 AI translations/month | | **Founder Access** | One-time purchase, unlimited AI translations, 100 custom words, voice chat translation | See [Billing and Limits](/docs/billing-and-limits) for full quotas and how to upgrade. ## Need help? [#need-help] Join the [support Discord](https://discord.gg/gjKmEnvkxx) if you get stuck configuring BabelBot. Or check [Troubleshooting](/docs/troubleshooting) and the [FAQ](/docs/faq) first. Most issues are answered there. ## Start here (recommended order) [#start-here-recommended-order] 1. [Quick Start](/docs/quick-start): invite, dashboard, first translation 2. [How BabelBot Works](/docs/how-babelbot-works): skips, reply vs thread, reply styles, AI vs text translation 3. [Dashboard Guide](/docs/dashboard): daily configuration 4. [Command Reference](/docs/commands): Discord shortcuts for admins and members 5. [Troubleshooting](/docs/troubleshooting): when something does not match expectations ## Core guides [#core-guides] Invite BabelBot, enable one target language in the dashboard, and confirm an automatic translation. Why some messages never translate, how bridges and AI quota work together, and how Reply mode, Thread mode, and reply styles affect output. Step-by-step recipes for languages, channel rules, bridges, audit logs, media translation, and billing. Enable live voice call translation on Ultra or Founder Access: admin setup, member steps, and limits in plain language. Tables for `/help`, `/dashboard`, `/upgrade`, `/voice`, `/set-context-language`, and message context menus. Starting configurations for small servers, high-volume communities, and bilingual channel pairs. Plan limits, what counts toward AI quota, and when to upgrade. ## For members [#for-members] You do not need the dashboard to use BabelBot. Right-click a message for **Translate Text** or **Detect Language**. React with a supported flag emoji where enabled. Run `/set-context-language` for your context-menu language. Or follow [Voice chat translation](/docs/voice-chat-translation) to translate a live voice call. ## Useful links [#useful-links] * [Marketing site](https://www.babelbot.xyz): homepage, pricing, and invite link * [Dashboard](https://app.babelbot.xyz/login): configure your server * [Support Discord](https://discord.gg/gjKmEnvkxx): ask a question or report an issue # Multilingual Discord server setup playbooks These recipes cover common server shapes. Adjust them to your moderation style. All steps use the [dashboard](https://app.babelbot.xyz/login) unless noted. ## Playbook A: Small multilingual server [#playbook-a-small-multilingual-server] **When to use:** Low or medium traffic, general conversation channels, casual international community. **Outcome:** Readable translations without flooding the channel. ### Start with one target language [#start-with-one-target-language] Add the language most members need to read. Do not add every language you might want later. Fewer target languages mean fewer translated sections and lower translation usage per post. ### Use reply in channel [#use-reply-in-channel] Open **Reply mode**. Choose **Reply in channel**, then choose **Embed** or **Plain text** under **Reply style**. Switch to threads later if volume grows. ### Exclude non-conversation channels [#exclude-non-conversation-channels] Open **Channel rules**. Create rules that turn translation **off** for admin, audit, and bot-command channels. Test each channel with a short message. ### Validate and monitor [#validate-and-monitor] Post in your main chat in a language that is not your target. Check **Overview** usage after a few days. ## Playbook B: High-volume international server [#playbook-b-high-volume-international-server] **When to use:** Many simultaneous messages, multiple languages, active public channels. **Outcome:** Translations grouped in threads; quota stays predictable. 1. Open **Reply mode**. Choose **Reply in threads** from day one. 2. Add only target languages with a clear audience. Avoid translating busy channels into many languages at once. 3. Use **channel rules** to limit automatic translation to public discussion channels. 4. Open **Billing & upgrades** weekly. Use `/upgrade` in Discord for a quick check. 5. If AI quota is tight, remove low-value languages before you upgrade. Thread mode cuts visual noise in the channel. Fewer languages cut AI usage. Both matter on busy servers. ## Playbook C: Bilingual split channels (pair bridge) [#playbook-c-bilingual-split-channels-pair-bridge] **When to use:** Dedicated `#english` and `#spanish` (or similar) instead of one mixed channel. **Outcome:** Messages posted in either channel appear translated in the other. 1. Open **Bridges**. Create a **pair** bridge. 2. Select channel A and its language, then channel B and its language. 3. Post a test message in channel A. Confirm it appears in channel B in the correct language. 4. Repeat in the opposite direction. Each two-channel bridge uses one bridge connection from your plan. Each language channel linked to a hub uses one connection. New and expanded hubs can connect up to 25 language channels. Do not link channels you do not actively moderate. ## Playbook D: Hub and spoke languages [#playbook-d-hub-and-spoke-languages] **When to use:** One main announcement or English hub plus several language-specific side channels. **Outcome:** Messages in the hub channel appear in each language channel, and messages in a language channel can appear in the hub. 1. Open **Bridges**. Create a **hub** bridge. 2. Assign the hub channel and language, then each spoke channel and language. 3. Test from the hub and from each spoke. 4. Confirm BabelBot has **View Channel**, **Send Messages**, and **Manage Webhooks** in every linked channel. ## Playbook E: Moderation-first baseline [#playbook-e-moderation-first-baseline] **When to use:** You want translation only where mods explicitly allow it. **Outcome:** Translation runs in a small set of channels. Channels in configured bridges keep relaying until you remove or disable those bridges. 1. Leave server translation **on** globally. 2. Add **channel rules** that turn translation off everywhere you do not want it. Or enable translation only in the channels you allow. 3. Verify each channel with a test message (see [Dashboard Guide](/docs/dashboard) on rule enforcement). 4. Use **thread** mode in the few enabled channels. 5. Add bots or accounts that must never trigger translation under **Ignored users** in the sidebar. ## Playbook F: Quota-conscious free tier [#playbook-f-quota-conscious-free-tier] **When to use:** Free plan, tight AI budget, mostly text chat. **Outcome:** AI quota is spent on high-value channels. Supported plain text continues with BabelBot's in-house translator after the AI cap. 1. Use one target language without the **AI only** label. 2. Disable flag reactions if mods do not need them (saves AI quota). 3. Media translation is not available on the free tier. 4. Avoid bridges unless you truly need cross-channel relay. 5. Optional: when your server is eligible for the one-time +100 Free bonus, use the Top.gg reward link in Dashboard Overview or BabelBot's welcome DM. See [Billing and Limits](/docs/billing-and-limits). ## Playbook G: Multilingual voice calls [#playbook-g-multilingual-voice-calls] **When to use:** Regular voice meetings where people speak different languages. **Requires:** Ultra or Founder Access. Follow [Voice chat translation](/docs/voice-chat-translation) for setup. 1. Configure at least one target language in the dashboard. 2. Enable **Voice chat translation** and pick a message style. 3. Tell members to join voice and run `/voice start` before the call. 4. Remind people to pause briefly between sentences so BabelBot can catch a full thought. 5. Stop with `/voice stop` when the meeting ends. ## Playbook H: One shared language in a mixed-language channel [#playbook-h-one-shared-language-in-a-mixed-language-channel] Use this when members write in different languages but want to read one language in the same channel. 1. Choose one target language, such as French. 2. Open **Channel rules** and set **Replace the original** for a regular server text channel. 3. Grant BabelBot **View Channel**, **Read Message History**, **Manage Webhooks**, and **Manage Messages** in that channel. 4. Send a short message in another language. BabelBot posts the French translation with the member's name and avatar, then deletes the original after it confirms delivery. French messages stay as they are. 5. Choose **Reply in channel** or **Reply in threads** in the rule to stop replacement. With multiple target languages, the replacement includes the original text first. Members cannot edit the repost as their own message. Attachments, stickers, polls, forwarded messages, announcements, bridges, and messages inside threads keep their existing delivery behavior. See [replacement settings](/docs/dashboard#replace-the-original) for the full limits. ## Weekly operational checklist [#weekly-operational-checklist] Each week, on **Overview** and **Billing & upgrades**: * Translation still enabled; usage trend looks normal * Target languages still match community needs * Reply preference and reply style still fit volume * Bridges still point at the correct channels * Monthly allowance estimate still looks safe, or you already know you need to upgrade. BabelBot also posts in-Discord notices at the existing usage thresholds. ## Related pages [#related-pages] * [Quick Start](/docs/quick-start): if you have not invited the bot yet * [How BabelBot Works](/docs/how-babelbot-works): why skips and quota behave as they do * [Troubleshooting](/docs/troubleshooting): when a playbook step does not work # BabelBot quick start for Discord translation Guided setup takes you from the Discord invite to your first automatic translation in about two minutes. It detects your server, applies your choices, and checks your first translation. * You need **Manage Server** on the target Discord server * You must add BabelBot to the server, not only to your user account ## Get your first translation [#get-your-first-translation] ### Start guided setup [#start-guided-setup] Open [guided setup](https://app.babelbot.xyz/onboarding), then add BabelBot to the server you manage. The setup page detects the server after Discord authorizes the bot. ### Choose the languages your members read [#choose-the-languages-your-members-read] Choose at least one target language. BabelBot detects the language of each message and translates it into the languages you choose. ### Choose how translations appear [#choose-how-translations-appear] Choose replies or threads, then select **Turn on translation**. Sign in with Discord if prompted. Later, choose **Embed** or **Plain text** for replies on the **Reply mode** page in the dashboard. You can also choose [**Replace the original**](/docs/dashboard#replace-the-original) for automatic text translations or set rules for individual channels there. ### Post a test message [#post-a-test-message] Send a short message in a language different from your target. Guided setup watches for the translation and confirms that BabelBot works. ## Manual setup [#manual-setup] Use the dashboard if you skipped guided setup or want to configure the server yourself: 1. Sign in at [app.babelbot.xyz/login](https://app.babelbot.xyz/login). 2. Select the installed server and click **Manage**. 3. On **Overview**, turn **Translations** on. 4. Under **Target languages**, add at least one language. 5. Choose **Reply in channel**, **Reply in threads**, or [**Replace the original**](/docs/dashboard#replace-the-original). If you choose replies, select **Embed** or **Plain text**, then send a test message in Discord. You can also run `/dashboard` in the server to open its dashboard page. You need **Manage Server**. ## If nothing appears [#if-nothing-appears] Check these before changing more settings: * On **Overview**, translations are enabled for the server * Under **Target languages**, at least one language is listed * Under **Channel rules**, the test channel is not excluded (see the [Dashboard Guide](/docs/dashboard) for how rules work) * The message has normal text (not only a URL, emoji, or similar) Still stuck? Continue with [Troubleshooting](/docs/troubleshooting). ## Optional: keep channels clean from day one [#optional-keep-channels-clean-from-day-one] Under **Channel rules**, add rules that turn translation off in admin, audit, and bot-command channels. Send a test message in each channel type to confirm behavior matches what you expect. If one of those channels belongs to a bridge, bridge messages still relay. Remove or disable that bridge to stop traffic between its linked channels. ## Verify on Overview [#verify-on-overview] Open **Overview** for your server and confirm: * Translation is **on** * **Plan & usage** shows your tier and remaining AI capacity * **Translation activity** will populate after real traffic (not required for this guide) Run `/help` in Discord for a short recap of commands that still work in chat. ## First-week defaults [#first-week-defaults] * **Reply preference:** reply in channel * **Reply style:** Embed by default, or Plain text for compact output * **Target languages:** start with one * **Channel rules:** disable translation in mod/log/bot channels * **Reply preference:** reply in threads from day one * **Target languages:** only languages your community actually reads * **Billing & upgrades:** check usage weekly ## What to read next [#what-to-read-next] * [How BabelBot Works](/docs/how-babelbot-works): why some messages are skipped on purpose * [Voice chat translation](/docs/voice-chat-translation): live voice call setup and usage * [Command Reference](/docs/commands): member shortcuts in Discord # Discord translator bot troubleshooting Use this page when a translation is missing or looks wrong. Work from the problem to the checks, then apply the fix. For why BabelBot skips some messages on purpose, read [How BabelBot Works](/docs/how-babelbot-works). ## Quick configuration check [#quick-configuration-check] Before you dig deeper, confirm these items in the [dashboard](https://app.babelbot.xyz/login): Check Where Translation enabled Overview At least one target language Target languages Test channel not excluded Channel rules (verify with a test message) AI quota remaining Billing & upgrades Reply mode matches expectation Reply mode Reply style matches expectation (when using replies) Reply mode Voice chat enabled (if testing `/voice` ) Voice chat (Ultra or Founder Access) Run `/help` in Discord for admin command reminders. ## Issue catalog [#issue-catalog] Check these items: 1. Open **Overview** and confirm translations are on. 2. Confirm the channel is not disabled (channel rules or disabled list). Test with a message. 3. Confirm at least one target language is configured. 4. Confirm the message has translatable text or supported media attachments. 5. Confirm the author is not on the ignored-users list. 6. Confirm AI quota is not blocking attachment translation on your plan. Bridge attachment mirroring does not use AI quota. Fix the failing check. If all checks pass, contact support with server ID, channel ID, and approximate time. This is usually expected. BabelBot skips bots (except followed announcements and bots you add to **Translate other bots**), ignored users, non-translatable content, and messages that already match the target language. See [How BabelBot Works](/docs/how-babelbot-works). These notices apply to regular automatic messages, not bridge relays. BabelBot tried to translate the message, but one or more target languages came back missing, empty, or duplicated. A partial notice can also mean BabelBot translated the message text but could not translate the attachments. Click **Retry** once if the notice has a button. BabelBot retries only the missing languages and leaves source-language targets out. Retry buttons expire after about 1 minute. If BabelBot asks you to wait, wait for the cooldown and click **Retry** again. That wait does not use up the retry. If the button says it expired or was already used, send a fresh message if you still need the translation. If a retry starts but getting the original message, translating, checking quota, or posting fails, the button remains available until it expires. If BabelBot says it cannot find the original message, the source message was deleted or is no longer reachable. If Retry keeps returning a partial notice for the same language, contact support with the message link, server ID, and target language. Your Discord account needs **Manage Server** in that server. BabelBot must also be installed there. Copy the server address again from **Integrations**, then **AI assistant (MCP)**. Confirm that your app supports remote HTTP MCP servers with OAuth. Sign in with the same Discord account you use for the dashboard. You still need **Manage Server**, and plan limits still apply. Follow the [AI assistant integrations guide](/docs/ai-assistant-integrations) for app setup, permissions, and disconnect steps. On Free, Pro, and Ultra, **plain text** may continue via BabelBot's in-house translator after AI quota is used when the target language does not have an **AI only** label. AI-only languages, attachment content, flag reactions, and context menus still need AI capacity. Bridge attachment mirroring does not. Upgrade, or reduce languages, channels, or flags. Open **Overview**. If BabelBot lists a channel permission warning, grant the permissions shown for that channel in Discord. Common needs are **View Channel**, **Send Messages**, **Embed Links**, **Read Message History**, **Send Messages in Threads**, and **Manage Webhooks**. Replacement also needs **Manage Messages**. For automatic replies, translation threads, and public flag translations, BabelBot skips translation when it can confirm that channel permissions or an active timeout block delivery. If the warning lists **Remove Timeout**, a server moderator must remove BabelBot's timeout, or you must wait for it to expire. Changing channel permissions does not remove a timeout. After you grant the permissions, post a short test message in that channel. When BabelBot delivers a translation successfully, the warning clears. Check that BabelBot can view the channel and has **Manage Threads**. BabelBot retries cleanup after you restore access. Check these items: 1. Confirm the bridge exists under **Bridges**. 2. Confirm each channel has the correct language assigned. 3. Confirm BabelBot can view and send in **both** channels. Grant create or manage webhooks if Discord asks for it. 4. Test both directions with short text messages. 5. Test an attachment-only or sticker-only message. Images and supported videos should use Discord's normal preview. Spoilered media should stay hidden until opened. Other files should arrive as labeled original-file cards. Custom server stickers should keep their preview when Discord supports the format, with an original link for other formats. These relays work even when **Media translation** is off. If a bridge cannot produce usable translated text, BabelBot does not post a generic failure notice in the source channel. Try the message again with clearer wording. If it still does not appear, contact support with the source message link, server ID, and approximate time. A dedicated service outage notice may still appear. If BabelBot cannot send translated text to any linked destination, it still replies in the source channel and names the affected channels. Check **View Channel**, **Send Messages**, thread permissions, and **Manage Webhooks** in those channels. Check that BabelBot can view the destination channel and read message history. If the original webhook was deleted, BabelBot also needs **Manage Messages** to remove its old copies. Contact support with the remaining copy's message link if it stays in place. New bridge message links have no time limit. Links created before this update keep their original expiry, normally 30 days after creation. Editing a message does not extend that period. Expired links cannot be recovered. Confirm the bridge still links the same channels. Confirm BabelBot still has permission to edit the messages it posted. A deleted linked copy stays deleted. BabelBot will not post a replacement. Text edits also need translation quota unless BabelBot's in-house translator applies. If one linked channel updates and another does not, contact support with the source message link and the affected channel. BabelBot mirrors reactions while bridge message links exist, including custom and animated emoji from another server. New links have no time limit; links created before this update keep their original expiry. Confirm the bridge still links the channels. Confirm BabelBot can view the messages, read message history, and add reactions in each channel. Discord shows BabelBot as the reacting account on the linked copies. If a reaction is still missing while the bridge message links exist, contact support with the source message link, the emoji, and the affected channel. Open **Flag reactions** and check **Translation visibility**. With **Private DM**, BabelBot sends the result only to the member who reacted. If no DM arrives, allow direct messages from server members and try the reaction again. BabelBot does not post a private translation in the channel when Discord blocks the DM. Open **Channel rules**. Use **Preview a channel** first. It shows the winning rule, any shadowed rules, and the effective settings for that channel. The first matching channel rule wins. **Translation status** off stops normal automatic translation in that channel. Configured bridges keep relaying until you remove or disable the bridge. **Flag reactions** separately controls on-demand flag translations, so you can leave flags on while automatic translation is off. If behavior differs, contact support with server and channel IDs. Translating attachment content requires a **paid** plan and **Media translation** enabled in Settings. Free tier blocks media-only translation outside bridges. Supported media includes PDFs up to 50 MB, images, video attachments, Discord voice notes, and common audio files posted in text channels. Confirm remaining AI quota on **Billing & upgrades**. Bridge attachment mirroring is separate. Images and supported videos should use Discord's normal preview. Spoilered media should stay hidden until opened. Other files should arrive as labeled original-file cards. For posts with written text, confirm that the translated caption appears with the media result, including flag reactions and linked channels. If a multi-image post translates only some supported images, contact support with the message link. Work through [Voice chat translation](/docs/voice-chat-translation) first. Then check: 1. Confirm the server is on **Ultra** or **Founder Access**. 2. Turn on **Voice chat**. 3. Configure at least **one** target language. 4. Join a voice channel before you run `/voice start`. 5. Confirm BabelBot can view, connect, and send messages in that voice channel. 6. Confirm no other voice translation is already running in the server. 7. Check whether the only target language matches the language that the member speaks. BabelBot does not post a message when no translation is needed. If **Clean speaker messages** is enabled, BabelBot also needs **Manage Webhooks** in that channel. This is normal when everyone leaves voice, nobody speaks for 30 minutes, the call hits 4 hours, or BabelBot reconnects after an update. Run `/voice start` again to continue. BabelBot needs Discord permission to read message content. If the bot sees empty messages, re-invite BabelBot from [babelbot.xyz](https://www.babelbot.xyz) and confirm it can read messages in the channels you use. If that does not fix it, contact support with your server ID. The original message may have been deleted while BabelBot was translating it. Discord may also block replies to that message type. In a voice channel's text chat, BabelBot replies in the channel even when **Reply in threads** is selected. Discord does not support message threads there. In thread mode, BabelBot also posts in the channel when Discord permissions prevent it from creating or posting in a translation thread. Grant BabelBot **Create Public Threads** and **Send Messages in Threads** if you want translations to stay in threads. BabelBot keeps the original if it cannot confirm that replacement is safe. Check **Manage Messages** in that channel if the translation arrived but the original remains. **Manage Webhooks** is a separate permission used to repost the translation. Editing the source, changing the channel's languages, disabling replacement, or removing an output during translation can also stop deletion. An uncertain delivery result keeps the original. Do not delete it manually until you have checked the translation. Replacement applies to human text messages in regular server text channels. Attachments, stickers, polls, forwarded messages, announcements, bridges, and existing threads use their existing delivery behavior. Flag reactions and context-menu translations also keep the original. Check BabelBot's channel permissions if an ordinary text message used reply delivery. This is expected when the plain-text output is too long for Discord's message limit. BabelBot creates a translation thread or reuses the current thread, then splits the output into separate messages that stay below Discord's message limit. Reduce the number of target languages or shorten the source message if you want a shorter reply. This is expected. BabelBot replies inside the current Discord thread instead of creating another thread. The same rule applies to automatic translations and flag reactions. Forum and media posts follow this rule because Discord treats each post as a thread. ## Reduce noisy output [#reduce-noisy-output] Too many replies or threads? Try these steps: 1. Open **Reply mode**. Choose **Reply in threads**. 2. Remove low-priority **target languages**. 3. Tighten **channel rules** so fewer channels auto-translate. 4. Remove unused **bridges**. ## Bridge check order [#bridge-check-order] 1. Confirm the bridge is visible in the dashboard. 2. Confirm languages match how your community uses each channel. 3. Confirm permissions in every linked channel. 4. Test text in each direction. 5. Test an attachment-only message in each direction. Images and supported videos should use Discord's normal preview. Spoilered media should stay hidden until opened. Other files should arrive as labeled original-file cards. Neither requires **Media translation**. 6. Check **Overview** activity chart for bridge-sourced translation usage. ## Quota reached [#quota-reached] When AI quota for the period is exhausted: * Open **Dashboard → Billing & upgrades** to see usage. * Run `/upgrade` for a billing link. * Plain text in target languages without the **AI only** label may still translate with BabelBot's in-house translator on Free, Pro, and Ultra. * Translating images and using flag or context-menu flows still need AI. Bridge attachment mirroring does not. To reduce usage: use fewer languages, fewer active channels, disable flag reactions, or upgrade the plan. ## When usage will not load [#when-usage-will-not-load] Use this section when usage will not load or in-channel warnings mention quota checks. ### Identify [#identify] 1. Open **Billing & upgrades**. Note if usage fails to load or looks stale. 2. Send one test message in an enabled channel. 3. Note whether translations pause entirely or only usage is wrong. ### Expected behavior [#expected-behavior] Tier type Translation during outage Free, Pro, Ultra May pause while BabelBot cannot check remaining AI quota Legacy Ultra, Founder Access May continue; usage numbers can lag ### What to do [#what-to-do] 1. Tell moderators BabelBot cannot check AI quota right now. 2. Avoid spamming retry tests in public channels. 3. Re-check billing every few minutes. 4. After recovery, send one test message to confirm normal flow. ### Contact support [#contact-support] Contact [support](https://discord.gg/gjKmEnvkxx) with server ID, outage start time, and a billing page screenshot if the problem lasts more than a short period. ## Contact support [#contact-support-1] Reach out when: * Settings match these docs but behavior does not * Issues are inconsistent across channels with the same rules * Dashboard or checkout fails repeatedly Include: **server ID**, **channel ID** (if relevant), **message ID** (if relevant), time range, and a billing screenshot if the issue is quota-related. **Support:** [discord.gg/gjKmEnvkxx](https://discord.gg/gjKmEnvkxx) # BabelBot voice chat translation guide Use this when people talk in a Discord voice channel and others need to read translations in the voice channel's text chat. **Voice notes** are short audio clips posted in text channels. **Voice chat translation** is for live calls. You talk in voice, and BabelBot posts translated text while the session is running. ## For server admins [#for-server-admins] **Before you start:** your server needs an **Ultra** or **Founder Access** plan, at least **one target language** in dashboard settings, and BabelBot installed with permission to use the voice channels you care about. The dashboard controls server eligibility and how translated messages look. Members operate live sessions from Discord with `/voice start`, `/voice stop`, and `/voice status`. ### Turn the feature on [#turn-the-feature-on] 1. Open the [dashboard](https://app.babelbot.xyz/login) and select your server. 2. Go to **Voice chat**. 3. Enable **Allow voice chat translation**. ### Choose how translations look [#choose-how-translations-look] Pick one **Voice message style**: * **Clean speaker messages**: translated text appears under the speaker's name and profile picture. Use this if you want the chat to feel like people are posting. * **Detailed embeds**: BabelBot posts a card with what was said, the detected language, and the translation. Use this if mods want more context. ### Check bot permissions in voice channels [#check-bot-permissions-in-voice-channels] BabelBot needs to **view**, **connect to**, and **send messages** in the voice channels you use. If you chose **Clean speaker messages**, it also needs **Manage Webhooks** in those channels. Re-invite BabelBot from [babelbot.xyz](https://www.babelbot.xyz) if you recently changed roles or permissions. Once this is set up, any member can start translation in voice. You do not have to run the call yourself. Each session uses the target languages configured for that voice channel (channel overrides included) the moment the member runs `/voice start`. ## For members [#for-members] ### Join voice first [#join-voice-first] Connect to the voice channel you want translated. ### Start translation [#start-translation] In any text channel in the same server, run `/voice start`. BabelBot joins the voice channel right away and translates each eligible speaker into the channel's configured target languages. There is no language picker. ### Read along in voice channel chat [#read-along-in-voice-channel-chat] Open the text chat for that voice channel. As people speak, BabelBot posts translations there. If the only target language matches the detected speaker language, BabelBot does not post a message for that speech. BabelBot listens in voice but does **not** speak back. Translations are text only. ### Stop translation [#stop-translation] Any of these work: * Run `/voice stop` * Click **Stop translation** on the start message in voice channel chat * If you started the session, or you are in the voice channel, or you can manage the server, you can stop it The session also stops on its own when everyone leaves the voice channel. ## Limits worth knowing [#limits-worth-knowing] | What | Limit | | ----------------------- | -------------------------------------------------------- | | Plan | Ultra or Founder Access | | Languages per call | All of the voice channel's configured target languages | | Active calls per server | 1 at a time | | Longest call | 4 hours. Run `/voice start` again if you need more | | Quiet call | Stops after 30 minutes with nothing new posted | | Recordings | BabelBot does not keep voice recordings | | Message quota | Voice chat does **not** use your normal AI message limit | If BabelBot restarts (for example during an update), the call translation stops. Start again with `/voice start`. ## Tips for better results [#tips-for-better-results] * Pause briefly between sentences so BabelBot can catch a full thought. * Use a voice channel where BabelBot has the permissions listed above. * Make sure the voice channel has at least one target language configured before starting. ## Related pages [#related-pages] * [Dashboard Guide](/docs/dashboard#enable-voice-chat-translation): admin settings * [Command Reference](/docs/commands): `/voice start`, `/voice stop`, `/voice status` * [Troubleshooting](/docs/troubleshooting): when `/voice start` fails or a session stops early * [Billing and Limits](/docs/billing-and-limits): which plans include voice chat