Migration
How to switch Discord bots without losing member XP
Switch Discord bots without losing member XP — the one free importer that genuinely moves levels, the parallel run, and seeding the ladder by hand.
- Time
- 8 min
- Topic
- Migration
- Published
- 30 August 2026
Leaving MEE6? Lurkr’s /importxp moves levels and role rewards across for free, once an hour,
with a minimum-level filter. Koya imports MEE6 or Amari from its dashboard. For every other pairing
no importer exists, and the working method is a parallel run: both bots live for two to four weeks,
then remove the old one.
That is the short answer. The rest of this page is what each route actually involves, and the two things that go wrong when people skip straight to the switch.
Before you start: you need Manage Server, and you need to have decided which bot you are moving to. Do not start a migration you have not finished evaluating.
Which imports actually exist?
Read directly from the vendors’ own documentation on 2026-08-30. This is the whole map, and it is shorter than most people expect.
| Route | Moves | From | Cost |
|---|---|---|---|
Lurkr /importxp | Levels and role rewards | MEE6 | Free |
| Koya dashboard import | Existing progress | MEE6 or Amari | Free |
| Lurkr leaderboard export | Your own data, out | Lurkr | Free |
Lurkr’s import page is also the clearest published statement of what is not supported, and it names its own gaps rather than hiding them: Amari is “Currently unavailable” because its API is unreachable, Polaris is manual-only through a JSON file and Lurkr’s support server, and Arcane is not supported at all.
Two more details from the same page, both worth knowing before you run it:
- Once per hour. The command is rate-limited “due to processing demands and API constraints from source bots”, so a large server is not a single click.
- A minimum-level filter, range 3 to 20, defaulting to 5. Members below the threshold are skipped. On a big server that is a mercy — it is the difference between importing your community and importing everyone who ever said hello.
- Role rewards move as a mapping, not as roles. Lurkr states it “only transfers the information which Discord role belongs to which level”, so the roles themselves must already exist.
Lurkr is worth crediting for the other half of this too. It publishes free instant export of your own leaderboard, with the reasoning stated out loud — a levelling bot that makes leaving easy is unusual, and it is the strongest trust signal in this category.
Why raw XP numbers do not transfer, even when they could
This is the part that catches people who try to move numbers by hand, and it is worth understanding before you do anything.
XP is not a unit. Each bot decides how much XP a level costs, and the curves are wildly different. Lurkr publishes three of them, including its own reproductions of rivals’ curves:
| Curve | XP for level n |
|---|---|
| Lurkr (default) | 50n² − 100n + 150 |
| Amari | 20n² − 40n + 55 |
| MEE6 | ≈1.67n³ + 22.5n² + 75.83n |
Vetox uses a different shape again — a fixed 101-step cumulative table where level 1 sits at 70 total XP and level 100 at 950,000 total, with text and voice sharing the same curve.
So 50,000 XP means one level on one bot and a very different level on another. Port levels, not XP. A member who was level 30 should be level 30, whatever number that costs in the new system.
The second consequence is one to tell your members before, not after: their number will change even when their rank does not. Nobody minds a level staying the same. Everybody notices an XP total dropping by an order of magnitude and nobody told them why.
The parallel run
This is the method server operators actually use, and it is documented on no vendor page. An operator who moved off MEE6 described it exactly:
“got the new bot setup had it take over the functions, made sure they worked for a couple weeks and then removed Mee6. and honestly the new system is easier for me anyways.”
— r/discordapp, January 2024
It works because leveling is the one feature where running two bots at once costs you nothing. Both count the same messages. The new bot builds a real leaderboard from live activity while the old one is still there as a reference, and by the time you remove the old bot the new one has several weeks of genuine data rather than an empty board.
1. Add the new bot without turning leveling on
Invite it, configure everything except the leveling module. Get the permissions right first — see which permissions a bot actually needs — and put its role above every role it will need to hand out.
2. Record the old ladder before you touch anything
Screenshot or export the old bot’s leaderboard, and write down every level-to-role mapping it holds. This takes ten minutes and it is the step people skip and regret, because the old bot’s dashboard becomes unavailable the moment you remove it.
Capture three things: the top members and their levels, the reward ladder, and any multipliers or excluded channels — those encode decisions you made for reasons you have forgotten.
3. Turn leveling on in the new bot, and start the clock
Enable it and let both bots count. Set the new bot’s rates to something close to the old one’s so the pace feels familiar, and set the exclusions you recorded in step 2 so members do not suddenly start earning XP in the bot-spam channel.
Two to four weeks is the working range. Two weeks catches your regulars; four catches most of the people who check in weekly.
4. Seed the ladder for the members who matter
You do not need to reproduce the whole board. You need the people who would notice.
Take the top 20 to 50 from your recorded leaderboard and set their levels directly in the new bot.
Most leveling bots expose an administrator command for this. On Vetox it is /setlevel and
/setxp, both requiring Manage Server, both taking either an absolute value or a relative
adjustment, and both able to target the text or the voice track independently — so you can seed a
voice-first community’s voice ladder without inventing text history for anyone.
Doing this near the end of the parallel run rather than at the start is deliberate. By then the new bot has real numbers, so you are adjusting rather than fabricating, and you can see who the parallel run already put in roughly the right place.
5. Let the reward roles catch up
Once levels are seeded, the reward ladder should reconcile itself. Check how your new bot handles this, because the behaviours differ.
Vetox re-evaluates reward roles on every XP award rather than only on a level-up, so a member who was seeded to level 30 gets the level-30 role on their next message without anyone touching it. That reconciliation also covers anyone who lost a role, or who crossed a threshold while the bot was offline. Its reward ladder is ungated — unlimited reward rows on every tier including the free one — with a text threshold, a voice threshold and an AND/OR operator per row, so a “veteran” role can require activity in both halves of the server rather than just fast typing.
6. Remove the old bot
Only when three things are true: the new board looks right, the reward roles have landed, and nobody has complained for a week.
Then remove the old bot and cancel its subscription. Kicking a bot does not cancel billing, and a forgotten per-server subscription is the most common way a migration ends up costing more than staying.
What about voice XP?
Worth deciding early, because it constrains the choice of bot rather than the choice of method.
Not every leveling bot counts voice time. Lurkr’s own documentation enumerates its XP sources exhaustively — text messages, replies, slash-command usage and context-menu usage — and voice is not among them. For a voice-first community that is decisive, whatever else the bot does well.
Vetox runs voice as a full second track with its own totals, levels and leaderboard, plus the three settings that make voice XP honest rather than farmable: ignore members who are alone in a channel, block XP from muted members, and block XP from deafened members. If your community lives in voice, test that the bot you are moving to actually measures it before you run the parallel, and set the voice thresholds up as a first-class ladder rather than an afterthought — how to set up leveling and rank rewards covers both tracks.
If you are the one being left
Two things reduce the pain of a future migration, and both are worth setting up now rather than at the point of leaving.
Keep your own copy. Export the leaderboard periodically if your bot allows it. Lurkr does this free and instantly; Amari publishes a read API, though keys are granted by application rather than self-serve.
Prefer bots that publish an export. The ability to leave is a feature, and the vendors that offer it say so plainly. It is a reasonable thing to check before you commit a community’s history to a product.
Common questions
Can I move XP between two bots that have no importer? Not automatically. The two workable routes are a parallel run plus manual seeding of the top members, or an export-and-API path if the old bot publishes an export and the new one publishes a write API. Most pairings have neither, which is why the parallel run exists.
How long should the parallel run be? Two to four weeks. Shorter than two and your weekly regulars are still on zero. Longer than four and you are paying for two bots while confusing your staff about which dashboard is live.
Will members lose their roles during the switch? Not if you seed levels before removing the old bot, and not if the new bot’s role sits above every reward role. Roles granted by the old bot stay on members when it leaves — Discord does not revoke them — so the risk is a missing new role, not a lost old one.
Do I have to tell members? Yes, and once is enough. Say what is changing, that levels are being carried across, that the raw XP number will look different, and when the old bot is going. A three-line announcement prevents most of the tickets.
What about everything that is not XP? Levels are the hard part; the rest is re-setup labour. Panels, welcome messages, log channels and auto-roles all have to be rebuilt by hand, and migrating away from MEE6 walks through that side of the job in order.
Sources and verification
Checked