Skip to main content
Configuration never transfers automatically between bots, Discord doesn’t expose a way for one bot to read another’s saved settings, and neither would you want it to (every bot structures things differently). This is the order that avoids the most friction.
1

Write down what actually matters

Not everything needs to move day one. At minimum, note: your prefix (if you want to match the old one), mod-log channel, mute role (if you use one instead of timeout), welcome/leave channel and message text, and any custom commands or autoresponders worth keeping.
The Prefix and language config card: prefix !, the mute role Muted, the language and the command to change the prefix

In Discord: !prefixconfig shows the basics to match with the old bot: prefix, mute role and language.

2

Set up Petto alongside the old bot first

Don’t remove the old bot yet. Run through Your First Server Setup with Petto while the old one is still active, so you’re never without moderation coverage mid-migration.
The Petto setup panel at 1 of 6 areas: only the prefix is set, and the Quick setup, Refresh, Documentation and Dashboard buttons

In Discord: /setup on a server that has just added Petto, with what is still to set up.

3

Recreate config, don't guess

Copy welcome/leave/boost message text directly if you have it saved, rather than rewriting from memory, small wording differences compound. Variables use different token names between bots, translate the concept, not the literal syntax.
The Welcome card with the channel, the message with {user}, {server_name} and {server_membercount}, and the preview with the values filled in

Dashboard → Security → Join Gate → Messages: the welcome text pasted with Petto's variables, and its preview.

4

Test each moved feature once

Trigger a test welcome (!welcome test), post a test autoresponder trigger, open a test ticket, before trusting the migration is complete.
liam runs !welcome test in #staff and Petto says it sent a test welcome to the welcome channel

In Discord: !welcome test sends a test welcome with your own account.

Petto welcomes liam to Petto Land as member 1841, with the text copied from the old bot

In Discord: the test welcome in the welcome channel.

5

Turn off the old bot's overlapping features

Running two bots that both respond to the same welcome event, or both log the same moderation actions, means duplicates. Disable the old bot’s equivalent feature once Petto’s version is confirmed working, module by module rather than all at once.
The Logs config card: mod-log with sanctions, automod and verification, member-log, message-log and server-log with their events

In Discord: !logsconfig confirms where Petto logs each event before the old bot's logs are turned off.

6

Remove the old bot last

Only once every feature you actually use has a working Petto equivalent. There’s no rush, and keeping it a few extra days costs nothing.
The Modules page with the setup guide at 7 of 7 and the filter To set up showing one module left, Image cards

Dashboard → Modules → To set up: the setup guide complete and what is still left.

What doesn’t carry over, and why

Past bans/warns/kicks logged by another bot live in that bot’s own database, Petto has no way to read it. Old sanctions already applied in Discord (an actual ban, an actual timeout) stay in effect regardless, only the history/case record doesn’t transfer.
Same reason, plus most bots use a different XP curve, so even a raw number import would produce different levels under Petto’s formula. Members start fresh, or use !level join / !level manage xp to award a starting bonus if you want to soften that.
The trigger and response text usually copies over fine, but variable tokens ({user}-style syntax) differ between bots and need translating, see Variables for Petto’s real list.