A cross-platform desktop application that migrates Discord messages between channels and threads while preserving the original poster's identity.
Getting started? See the Setup Guide for step-by-step instructions on creating a bot, configuring permissions, and running your first migration.
Discord Conduit re-posts messages from a source channel or thread to a destination channel or thread via webhooks using the original author's username and avatar, so migrated messages keep the original poster's identity. Attachments are re-uploaded (not linked), and reactions are preserved.
- Bot profile management — securely store multiple bot tokens in your OS credential store
- Channel browser — browse guilds, channels, and threads with side-by-side source/destination selection
- Migration preview — see message counts, attachment sizes, oversized file warnings, and permission checks before starting
- Message migration — re-post messages via webhook with original author identity preserved
- Undo a move — the bot move flow offers an Undo button that removes the copies it just posted, leaving the originals untouched
- Attachment re-upload — download and re-upload files (Discord CDN links expire)
- Reaction migration — best-effort reaction preservation (added as bot, not original users)
- Pin preservation — messages pinned in the source are re-pinned in the destination
- Poll migration — polls are re-created (question and answers; votes restart)
- Sticker fallback — PNG/APNG/GIF stickers are re-posted as images (webhooks can't send stickers)
- Original timestamps — optionally append each message's original send time
- Forum tag mapping — moving a forum post to another forum carries its tags across (matched by name)
- Message filtering — migrate a subset by author, date range, keyword, attachments-only, or excluding bots
- Reply references — reply chains include a snippet of the referenced message
- Resumable migrations — state persisted after each message, resume interrupted migrations
- Dry-run mode — validate the entire pipeline without posting
- Channel export — archive a channel to HTML, JSON, CSV, or plain text (read-only, with the same filters)
- Channel & category cloning — create the destination channel(s) and migrate in one step
- Cross-server — migrate or clone between different servers (the bot must be in both)
- Progress tracking — live progress bar, ETA, pause/resume, cancel
- CLI companion — run migrations from the command line
- .NET 10 SDK (for building from source)
- A Discord bot token (see Setup Guide for how to create one)
The bot needs these permissions in both the source and destination channels:
| Permission | Required for |
|---|---|
| View Channels | Browsing available channels and threads |
| Read Message History | Reading messages from the source channel |
| Send Messages | Posting migrated messages to the destination |
| Manage Webhooks | Creating webhooks to preserve author identity |
| Add Reactions | Re-adding reactions to migrated messages |
OAuth2 Scopes: bot, applications.commands
Download the latest build for your platform from GitHub Releases.
git clone https://github.com/DustBowl-Games/Discord-Conduit.git
cd Discord-Conduit
dotnet restore
dotnet build
dotnet run --project src/DustBowlGames.DiscordConduit.AppFor detailed setup instructions including bot creation, CLI usage, and troubleshooting, see the Setup Guide.
The CLI can run the bot long-lived (discordconduit bot start) to serve the slash and context-menu commands. For running it as a container or deploying to Kubernetes via Helm, see the Deployment Guide.
MIT License. See LICENSE.
Maintained by DustBowl Games.