Questions

Frequently asked questions

The things people actually ask — and the errors they actually hit.

General

It reads one server's complete structure — roles with their exact permissions, categories, channels, per-channel overrides, emojis, stickers, settings — and rebuilds it on another, or saves it to a file to rebuild later.

It does not move members, messages or bots. The Discord API allows none of those.

Free and MIT licensed. There is no hosted version by design: a tool with Administrator rights on your server should run on hardware you control.

Nowhere. The bot talks to Discord and nothing else; backups and checkpoints go to backups/ and state/ on your machine, both git-ignored. This site is static — no analytics, no cookies.

Copying your own servers is ordinary bot behaviour. Copying someone else's without permission is not, and the Terms of Use forbid it.

Roughly a second per object, so a 40-channel server lands around two minutes. Discord's rate limits set the floor — turning CLONE_DELAY down usually makes things slower, not faster.

Using it

Discord only lets a bot grant permissions it already holds. Without Administrator, any role that can ban or manage channels comes out stripped. A role it cannot fully recreate is created without the missing bits and reported at the end.

Yes, three ways: /sync adds only what is missing, /clone replaces, and /preview shows you the numbers first. Run /preview either way.

It can rebuild them, which is not the same thing. /clone messages:100 replays the last 100 per channel through webhooks — same text and author name, new timestamps. Needs the Message Content intent.

No, and nor can anything else — Discord has no API for moving a user into a server. Once people have joined, /clone member_roles:True restores their roles.

Emojis and stickers are the bulk. Use /backup include_images:False for a structure-only file. The full version still lands in backups/ either way.

Troubleshooting

Global commands take up to an hour to propagate; set DEV_GUILD_ID in .env for instant registration. Also check the bot was invited with the applications.commands scope.

Discord rejected the token — mistyped, or reset since you copied it. Generate a fresh one in the Developer Portal and watch for stray spaces.

You set ENABLE_MESSAGE_CLONE or ENABLE_MEMBER_ROLES to true without enabling the matching intent. Turn it on under Bot → Privileged Gateway Intents, or set the variable back to false.

The bot's role on the target lacks Administrator. The check runs before anything is deleted, so nothing has happened yet.

The bot's own role sat too low — Discord never lets a bot create a role above its own. Drag it to the top under Server Settings → Roles and clone again.

Stage channels and forums only exist on Community servers. Enable Community first; announcement channels are created as normal text channels without it.

Nothing is lost. /clone resume:True continues from the checkpoint. /status shows what is waiting; checkpoints expire after 24 hours.

Normal on large servers. The bot widens the pause between calls automatically and speeds back up afterwards.

On macOS and Linux the command is python3. On Windows it usually means Python was installed without "Add to PATH".

Still stuck?

Open an issue with the error message and what you were running. That is usually enough to sort it out.