# 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.

- Canonical: https://discordguides.blog/blog/switch-discord-bots-without-losing-xp
- Published: 2026-08-30
- Author: The Manual desk
- Facts checked: 2026-08-30
- Sources:
  - Lurkr docs — Importing levels from other bots (https://lurkr.gg/docs/guides/importing-levels-from-other-bots) — checked 2026-08-30
  - Lurkr docs — Customize leveling speed (XP curve formulas) (https://lurkr.gg/docs/guides/customize-leveling-speed) — checked 2026-08-30
  - Koya — Leveling features (https://koya.gg/en/features/leveling-bot) — checked 2026-08-30
  - r/discordapp — an operator describing the parallel-run switch (https://www.reddit.com/r/discordapp/comments/19dppos/the_shameful_state_mee6_has_turned_into/kj85r8o/) — checked 2026-08-30
- Publication: The Manual, an independent site not affiliated with Discord Inc.

---
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`](https://lurkr.gg/docs/guides/importing-levels-from-other-bots) | Levels **and** role rewards | MEE6          | Free |
| [Koya dashboard import](https://koya.gg/en/features/leveling-bot)                     | 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](https://www.reddit.com/r/discordapp/comments/19dppos/the_shameful_state_mee6_has_turned_into/kj85r8o/), 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](/blog/discord-bot-permissions-explained) — 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](/blog/set-up-discord-leveling) 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](/blog/migrate-from-mee6)
walks through that side of the job in order.