Chat bridges (Telegram and Discord)
A bridge links a Missived text channel with a Telegram group or channel, or a Discord channel, through your org's own bot there, and copies messages between them.
Before you start
- Plans. Available on the Ministry, Creator and Business plans (Ministry and Creator: up to 10 bridged channels, Business: 25). Free doesn't include bridges. A self-hosted server has every feature on.
- Who. Connecting a bot and linking channels needs the Manage integrations permission: Owners, Admins, or a custom role that grants it.
- Your own bot. There is no shared Missived bot. You make a bot on the other network, it belongs to you, and you paste its token into Missived. One Telegram bot and one Discord bot per org, and a bot can be connected to only one Missived org.
- Text channels only. Direct messages, group chats, personal channels, voice channels and meal trains are never bridged.
Everything below is in Org Settings → Integrations → Bridges. On a phone the section shows each bridge's status; connecting bots and linking channels is done on a computer.
Telegram
Make the bot
- In Telegram, open a chat with @BotFather (the official one, with the blue tick).
- Send
/newbot, then pick a display name and a username ending inbot. - BotFather replies with a token that looks like
123456789:AAF…. Keep it secret: anyone with it controls the bot. - Let it see the whole conversation. Bots start in privacy mode, where in groups they only see commands and replies to them. Send
/setprivacyto BotFather, pick your bot and choose Disable, then remove the bot from each group and add it again (Telegram applies the change when the bot joins). Making the bot an admin of the group works too. In a Telegram channel the bot must be an admin anyway.
Connect it
- Choose Connect a Telegram bot and paste the token.
- Pick How Telegram reaches this server: the webhook (Telegram sends each message to the server the moment it's posted) or Polling (the server asks Telegram for new messages). The webhook is offered only when the server is reachable by Telegram over https; otherwise polling is the only choice. You can switch later with Use polling / Use the webhook.
- Missived checks the token with Telegram, stores it encrypted, and never shows it again. The card warns you if privacy mode is still on.
Link a channel
- On the bot's card, choose Link a channel…, pick a Missived text channel and a direction, then Make a link code.
- Add the bot to the Telegram group (or make it an admin of the Telegram channel).
- As an admin of that group, post the command shown, for example
/link@YourBot MSV-7KQ2D-HX9PM. The code works once, for 15 minutes. - Back in Missived, the link appears as Waiting for you, with the group's name and who posted the code. Choose Confirm. The bot says it's linked in the group.
Nothing is relayed until you confirm, so a leaked code can't quietly pipe a channel into a stranger's group. If you don't recognise the chat, choose Remove.
Discord
Make the bot
- Open https://discord.com/developers/applications → New Application, and name it.
- Open the Bot tab → Reset Token → Copy. This is the bot token. It is not the OAuth2 client secret, and never your own account's token.
- On the same Bot tab, under Privileged Gateway Intents, turn on Message Content Intent and Save Changes. Without it Discord hides what people type, so nothing can be relayed from Discord (Missived to Discord still works).
Connect it
- Choose Connect a Discord bot and paste the token.
- Missived checks it with Discord, stores it encrypted and never shows it again. It keeps one live connection to Discord for the bot, which resumes after a restart.
- Invite the bot. The card shows an invite link that asks for exactly what the bridge needs: View Channels, Send Messages, Manage Messages, Embed Links, Attach Files, Read Message History, Manage Webhooks, Create Public Threads and Send Messages in Threads. Open it, pick your Discord server and authorise it (you need Manage Server there).
Link a channel
Choose Link a channel…, pick a Missived channel and a direction, then either:
- Pick it from the bot's servers. Choose the Discord channel from the list and Link this channel. Picking it is the confirmation. The bot must already be in the server.
- Post a one-time code in the Discord channel, for a channel the picker can't reach. Choose Make a link code; someone who manages that server (its channels or webhooks) posts the command shown, such as
@YourBot link MSV-7KQ2D-HX9PM, in the Discord channel. Then Confirm the link in Missived. The code works once, for 15 minutes.
Directions
| Direction | What happens |
|---|---|
| Both ways | Messages from either side appear on the other. |
| Telegram → Missived / Discord → Missived | Messages from there appear here; nothing from here goes out. |
| Missived → Telegram / Missived → Discord | Messages from this channel appear there. Good for an announcements channel. |
Change a link's direction from its card at any time.
What relays
Into Missived. A remote message appears as "Ann Lee (Telegram)" or "Ann Lee (Discord)" (the Discord server nickname), with the person's photo and a BOT badge. The network in brackets keeps a remote name from passing for a member's. Formatting, links, replies (as a quote line) and files come across. From Telegram, forwards, photos, voice notes and videos also come across; animated stickers, polls and locations become a short note. From Discord, PNG stickers, #channel and custom emoji (as text) come across, and messages in a Discord thread become replies in the matching thread here.
Out of Missived.
- Telegram: messages come from the bot as "Dana Pastor: …", formatted, with files. A thread reply is sent as a reply to the thread's first message.
- Discord: messages are posted through a webhook the bot makes in the channel, so each Missived sender shows with their own name and picture. A thread reply goes into the matching Discord thread; the bot starts one from the first message's copy if there isn't one yet.
Mentions are inert both ways. An @mention from the other network shows as plain text here and notifies nobody. Messages sent to Discord can never ping @everyone, @here or anyone else.
Edits are mirrored both ways.
Deletes:
- Deleting a message in Missived removes its copy on the other network. Telegram lets a bot delete its messages for 48 hours.
- When a moderator here deletes a relayed message, the original is removed on the other network too, where the bot is allowed to (on Discord it needs Manage Messages).
- A message deleted on Discord is removed here. Telegram doesn't tell bots about deletions in groups, so a delete there isn't mirrored.
The bridge never echoes its own posts back. A private chat with the Telegram bot only answers /start with what the bot is.
Members see a Telegram or Discord chip in the channel header (on a phone, under the channel name) that says where the channel's messages go.
What data moves
- Only what is said in a linked channel, in the direction you chose, after you confirmed the link. Nothing from direct messages, group chats or any other channel.
- To the other network: each relayed message's text, its sender's display name (and on Discord, their picture) and its files. The other network then holds those copies under its own rules.
- Kept in Missived: the relayed messages and files, stored like any other message, with the remote sender's display name and photo. To mirror edits and deletes, Missived remembers which remote message each copy belongs to for 30 days.
- Encrypted orgs. If your org encrypts messages at rest, the page warns you: anything relayed to another network is sent there as plain text.
- Bot tokens are stored encrypted, never shown again and never written to the audit log. Every bridge change (connect, link, pause, disconnect) is in the org's audit log, without tokens or codes.
Limits
- Bridged channels per org: Ministry and Creator 10, Business 25. A link waiting for confirmation counts too, so remove any you don't recognise. The section shows how many you've used.
- Files from the other network: up to 20 MB from Telegram and 25 MB from Discord. A bigger file becomes a note ("sent report.pdf, too large to copy here"). Files also count toward your org's storage.
- Files to the other network: up to 50 MB to Telegram and 10 MB to Discord. A bigger file is named in the message with "open it in Missived".
- Pace. Each network limits how fast a bot may post, and Missived keeps to it: about 20 messages a minute into one Telegram group. A burst from the other side is delayed rather than dropped.
- At most 10 link codes can be waiting at once.
Pause, replace, disconnect
| On the bot's card | Does |
|---|---|
| Check | Asks the network about the bot (and the Telegram webhook, or the Discord Message Content Intent and connection). |
| Replace token | After you revoke or reset the token, paste the new one for the same bot. Links are kept, and a bridge that paused over its token resumes. |
| Pause / Resume | Nothing is relayed either way while paused, and messages sent meanwhile aren't sent later. |
| Disconnect | Every linked channel stops relaying. Messages already copied stay. |
Each link has its own Pause and Unlink; messages already copied stay.
Troubleshooting
A bridge or link that runs into trouble pauses itself and says why on its card, under Paused automatically:
- The bot token stopped working. It was revoked in BotFather or reset in the Discord Developer Portal. Paste the new token with Replace token.
- Discord refused the Message Content Intent. Turn it on under Bot → Privileged Gateway Intents, then resume.
- Another program is reading this bot's updates (Telegram). A bot can be connected to one place at a time.
- The bot was removed from the chat, or the Discord channel was deleted. Add the bot back (or link another channel), then resume the link.
- The bot can't post there any more. On Telegram, check its rights in the chat. On Discord, its webhook was deleted or its permissions changed: give it Manage Webhooks and Send Messages there, then resume.
When connecting:
| Message | Meaning |
|---|---|
| "That's a token for a Discord account, not a bot." | Self-bots break Discord's terms and get accounts banned, so Missived refuses them. Use the token from your application's Bot tab. |
| "This bot is already connected to another Missived org." | Make a separate bot for this org. |
| "That token is for a different bot." | Replace token only takes a new token for the same bot. Disconnect, then connect the other bot. |
| "That channel is already linked." | A Missived channel has one link. Unlink it first. |
| "Bridged channel limit reached for this plan" | Unlink a channel, or move to a plan with more. |
| "Privacy mode is on" (Telegram) | The bot only sees commands. See step 4 of Make the bot. |