/clone
Copies a server onto another. Confirmation dialog, live progress bar, cancel button, result report. The main event.
Eight commands, one idea underneath: read a blueprint, apply a blueprint. Everything below follows from that.
A blueprint describes a server independently of where it came from. The engine applies a blueprint to a target server. That's the whole architecture — and it means cloning, backing up, restoring and syncing are the same code path with different ends plugged in.
| Command | Blueprint comes from | Goes to |
|---|---|---|
/clone | Live server | Live server |
/backup | Live server | JSON file |
/restore | JSON file | Live server |
/sync | Live server | Live server, without deleting |
/cloneCopies a server onto another. Confirmation dialog, live progress bar, cancel button, result report. The main event.
/syncAdds only what is missing. Deletes nothing, overwrites no settings — for keeping a second server in step with the first.
/backupHands you the whole server as one file. Auto-compressed above 1 MB so it fits Discord's upload limit.
/restoreApplies a backup file to a server. The source server does not need to exist any more.
/previewDry run. Shows what would be copied, what would be deleted and how long it should take. Changes nothing.
/serversEvery server the bot can reach, with IDs and a permission check at a glance — 👑 ready, ⚠️ not an administrator.
/statusRunning jobs with their stage and progress, plus any unfinished run waiting to be resumed.
/helpThe short version of this page, right inside Discord.
/clone| Option | Default | What it does |
|---|---|---|
source | from .env | Source server — picked from a suggestion list, never typed |
target | from .env | Target server — same suggestion list |
wipe_target | True | Clear the target before building |
resume | False | Continue an interrupted run instead of starting over |
roles | True | Copy roles |
channels | True | Copy categories and channels |
emojis | True | Copy emojis |
stickers | True | Copy stickers |
settings | True | Copy name, icon, banner and base settings |
messages intent | 0 | Rebuild this many messages per channel via webhook |
member_roles intent | False | Reassign roles to members present on both servers |
Options marked intent need a privileged gateway
intent switched on in the Developer Portal and in your
.env. See optional extras.
@everyone permissionsVoice bitrate follows the target. If the destination server is boosted, quality is preserved; if it is not, the bitrate is capped cleanly instead of failing.
Limits of the Discord API, not of this bot. Anything claiming otherwise is worth a second look.
/backup writes the complete blueprint to one file. Below 1 MB it
stays readable JSON; above that it is gzip-compressed so it stays under
Discord's upload limit. A copy is also saved to the backups/
folder next to the bot.
# Full backup, images included /backup # Structure only — much smaller, no icons or emojis /backup include_images:False # Rebuild from a file, on any server /restore file:<your-backup.esc.json> target:<server>
A backup contains your server's entire permission structure. Treat the file as carefully as you would access to the server itself.
/sync matches by name, creates only what is missing, and never deletes or overwrites — for topping up a second server after changing the first.
/clone | /sync | |
|---|---|---|
| Deletes in target | Yes, if wipe_target | Never |
| Existing objects | Rebuilt | Reused |
| Server settings | Overwritten | Left alone |
| Result | Exact copy | Target plus what was missing |
Every created object is written to state/<target-id>.json at once. If a run stops, that checkpoint lets the next attempt skip ahead.
# See whether anything is waiting /status # Continue exactly where it stopped /clone resume:True
If source and target match, the bot stops before writing anything. That mistake would delete the original.
Rights are verified before the first deletion, not after. Includes a warning when the bot's role sits too low.
Buttons respond solely to the person who ran the command, and the prompt expires after 60 seconds.
A second clone into the same target is rejected while the first is still running.
Only the IDs in OWNER_IDS, and only administrators of the
target server, can start anything.
Rebuilt messages have mass mentions defused and mentions disabled — nobody gets notified twice.
Everything lives in a local .env file. Nothing is stored anywhere
else, and nothing leaves your machine except calls to Discord.
| Variable | Default | Meaning |
|---|---|---|
DISCORD_TOKEN | — | Required. Your bot token |
OWNER_IDS | empty | Who may use the bot. Empty means any server admin |
DEV_GUILD_ID | empty | Register commands on one server instantly instead of globally |
SOURCE_GUILD_ID | empty | Default source for /clone |
TARGET_GUILD_ID | empty | Default target for /clone |
CLONE_DELAY | 0.6 | Starting pause between API calls; adapts on its own |
EMBED_COLOR | 0x5865F2 | Accent colour of the embeds |
LOG_LEVEL | INFO | DEBUG, INFO, WARNING, ERROR |
ENABLE_MESSAGE_CLONE | false | Unlocks messages — needs Message Content intent |
ENABLE_MEMBER_ROLES | false | Unlocks member_roles — needs Server Members intent |
The Developer Portal, the invite link, and the setting almost everybody forgets.