Skip to content
CreateDiscordBot
Menu

Custom Discord economy bots and leveling bots for your server

I build leveling and economy bots on your own bot account: XP rules that spam can't farm, level roles, seasons, a coin shop with perks that matter and a leaderboard on your site. If Arcane or Tatsu's free tier covers you, I'll say so.

Usually
Starter bot, from $590
Timeline
1 to 2 weeks
You get
Source code and your own bot token

Example commands

  • /rank

    Shows your level, the XP you need for the next one and your place on this season's leaderboard.

  • /daily

    Claims the daily coin reward, with a streak bonus that resets if you miss a day.

  • /shop buy item:Event host (30 days)

    Buys a perk from the shop; timed items remove their role on their own when they expire.

  • /leaderboard period:season

    Posts the top 10 for the season, week or all time, with a link to the full board on your website.

  • /xp give member:@Sam amount:200 reason:Won the community cup

    Lets staff award XP by hand, with every grant written to the audit log.

  • /season end

    Archives the leaderboard, hands out season roles and resets XP and coins for the next season.

Connects to

  • Your database
  • Web leaderboard page
  • Discord login (OAuth2)
  • Google Sheets
  • Your game or league API
  • Discord voice activity

A Discord economy bot pays members in coins for taking part and gives them a shop to spend them in, and a leveling bot turns activity into XP, levels and roles. Ready-made bots cover both. As of September 2026, Arcane's free plan has message XP and up to 15 level roles, Tatsu's free tier gives 10 leveled roles and a server store, and UnbelievaBoat's free store holds 25 items. MEE6's plan comparison lists XP and Levels and its Economy plugin as Premium features ($11.99 a month).

A custom bot is worth paying for when the rules are yours: XP from match results or your own game's data, seasons on your calendar, shop items that grant perks you define, and a leaderboard on your own website. I build those on your own Discord application. I don't build casino games or anything that turns coins into money.

What the bot does

For members

  1. They chat as usual. The bot awards XP at most once a minute, so a burst of 10 messages counts once.
  2. At level 5 they get the Regular role and a short note in the level-up channel. At level 20 a role opens the channel for event hosts.
  3. /daily pays coins with a streak bonus, and /shop sells perks: a name color for 30 days, access to a channel, a spot in the next custom game.
  4. The leaderboard shows the top 10 in Discord and everyone on a page on your site, where members sign in with Discord to see their own history.

For admins

  • XP rules per channel. No XP in bot-command channels, extra in event channels, voice XP with its own rules.
  • A logged /xp give for event winners and a matching remove, so every manual change has a name and a reason.
  • Seasons. End a season with one command: the leaderboard is archived, top finishers get a season role, and XP and coins reset.
  • An economy view. Coins created and spent per week, so you spot inflation early.

The sign-in works like the Discord login I built for the Rivals League website.

XP rules that spam can't farm

Most leveling bots count messages, so the design question is what shouldn't count.

  • A cooldown per member. One award per minute, however fast someone types. With the rules below, level 5 takes about an hour of steady chat (58 counted minutes on average in my tests).
  • Channel weights. Zero in bot commands and memes, 1.5 in the channel you want busier.
  • Voice XP with conditions. Count a minute only when two or more people who aren't bots are in the channel, it isn't the AFK channel and the member isn't deafened, which Discord's voice state events report.
  • Text-based filters, if you want them. Skipping one-word messages or repeated text needs the privileged Message Content intent. Apps seen by fewer than 10,000 users switch it on in the Developer Portal; above that, Discord reviews the request.
  • Alt accounts. No XP until an account has been in the server for a set time, and limits on coin transfers between members, so a farm of alts can't feed one main account.

The rules live in their own file, so they can be tested and tuned without touching Discord:

xp.js
// xp.js: the XP rules, kept apart from Discord so they're easy to test and tune.
const COOLDOWN_MS = 60_000; // one award per member per minute, however fast they type
const CHANNEL_WEIGHTS = new Map([
  ['BOT_COMMANDS_CHANNEL_ID', 0], // no XP here
  ['EVENTS_CHANNEL_ID', 1.5], // bonus channel
]);

// XP needed to get from `level` to the next one. It grows with the square of the level.
const xpToNext = (level) => 5 * level ** 2 + 50 * level + 100;

function levelFor(totalXp) {
  let level = 0;
  let left = totalXp;
  while (left >= xpToNext(level)) {
    left -= xpToNext(level);
    level += 1;
  }
  return level;
}

// member: { xp, level, lastXpAt }. Returns null when nothing was awarded.
function awardMessageXp(member, channelId, now = Date.now()) {
  if (now - member.lastXpAt < COOLDOWN_MS) return null;
  const weight = CHANNEL_WEIGHTS.get(channelId) ?? 1;
  if (weight === 0) return null;

  const gained = Math.round((15 + Math.floor(Math.random() * 11)) * weight); // 15 to 25, weighted
  member.xp += gained;
  member.lastXpAt = now;
  const before = member.level;
  member.level = levelFor(member.xp);
  return { gained, level: member.level, leveledUp: member.level > before };
}

module.exports = { awardMessageXp, levelFor, xpToNext };

And the bot that uses them. Note the intents: Guilds and GuildMessages only.

bot.js
const { Client, Events, GatewayIntentBits } = require('discord.js');
const { awardMessageXp } = require('./xp');

// Level -> role ID. The bot's own role must sit above these in Server Settings > Roles.
const LEVEL_ROLES = new Map([
  [5, 'LEVEL_5_ROLE_ID'],
  [10, 'LEVEL_10_ROLE_ID'],
]);
const members = new Map(); // swap for a database before launch

// No Message Content intent: XP only needs to know that a message was sent.
const client = new Client({
  intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages],
});

client.on(Events.MessageCreate, async (message) => {
  if (message.author.bot || !message.inGuild()) return;

  const key = `${message.guildId}:${message.author.id}`;
  const member = members.get(key) ?? { xp: 0, level: 0, lastXpAt: 0 };
  members.set(key, member);

  const result = awardMessageXp(member, message.channelId);
  const roleId = result?.leveledUp && LEVEL_ROLES.get(result.level);
  if (roleId) {
    await message.member.roles.add(roleId, `Reached level ${result.level}`).catch(console.error);
  }
});

client.login(process.env.DISCORD_TOKEN);

Tested with discord.js 14.27.0 on Node 24.15.0 without logging in: spam inside the cooldown earns nothing, a zero-weight channel earns nothing, bots and DMs are ignored, the level 5 role is added once, and a role the bot isn't allowed to assign is logged instead of crashing it. A production build keeps members in a database and backfills roles when an admin grant skips a level.

Designing the economy

An economy is a set of sources, where coins come from, and sinks, where they go. Sources are chat, /daily, event prizes and staff grants. Sinks are shop items, timed perks that expire and fees on transfers between members.

If sources outgrow sinks, coins pile up, prices stop meaning anything and the shop empties. The fixes are dull and they work: timed items instead of permanent ones, a few expensive long-term goals, a cap on daily earnings and a season reset every few months. I set the numbers with you and check them after the first month.

Shop items that work well are the ones members can't get otherwise: a role that opens a channel, a name color, a vote on the next event, early access to a build. Real-world rewards such as merch discount codes can be shop items too, as long as members earn them rather than win them by chance.

Game and league data is where custom pays off. XP can come from match wins in your league database, tournament placements or your game's API instead of chat. The bot reads results on a schedule or from a webhook, writes each award to the audit log with its reason, and the leaderboard updates without anyone typing a command.

What I won't build

No casino games, no buying coins with real money, no cashing out and no paid loot boxes. My pricing page lists gambling and casino bots among the things I decline.

Discord's Gambling Policy is broken when four things are true at once: a payment or wager of real-world value, a prize of real-world value, an outcome decided mostly by chance, and a law that prohibits the activity. It counts virtual currency as real-world value when it has a market value or can be exchanged for money or goods. The Developer Policy bans using the API to facilitate illegal online gambling, and the Monetization Policy forbids monetizing gambling-adjacent content such as "simulated casinos and their games" through Server Subscriptions, App Subscriptions or the Server Shop.

Laws differ by country and by US state. The UK government decided in July 2022 not to bring loot boxes under gambling law, calling the ability to cash out an important distinction, and the same response cited Belgium and the Netherlands as places where loot boxes had fallen under gambling rules. That's why coins in the bots I build can't be bought, sold or cashed out. If you want to sell perks, sell a supporter role through a paid membership bot and give it bonus XP, which MEE6's Monetize plugin also lets servers do.

MEE6, Arcane, Tatsu or a custom Discord economy bot?

Prices and limits are from each vendor's own pages as of September 2026.

Option Price Leveling Economy Pick it when
Arcane, free $0 Message and reaction XP, 15 level roles (1 per level), weekly leaderboards Not listed on its plan comparison Chat XP and a handful of roles
Arcane Premium $7/mo or $75/yr Adds voice XP, custom XP values, unlimited level roles Same You need voice XP
Tatsu Free; Server Plus $4.99/mo, Server Premium $8.99/mo 10 leveled roles free, 20 or 40 on paid plans Server store for roles and items, plus Tatsu's global economy You like a ready-made pets-and-profiles economy
UnbelievaBoat Free; Premium $5.99/mo or $47.88/yr No leveling category in its command list 25 store items free; Premium adds unlimited items and custom income commands An economy with a store is the main feature
MEE6 Premium $11.99/mo, $49.99/yr after the first year, $89.99 lifetime (list prices) 15 to 25 XP per message, text channels only; role rewards /daily pays 50 to 120 coins, amounts admins can't change; up to 300 store items You already pay for MEE6
Custom bot From $590, plus optional Care from $49/mo Your XP rules, voice rules, seasons Your sources, sinks and shop The rules or data are yours

Arcane or Tatsu's free tier is enough for chat XP, a few level roles and a leaderboard. If that's your server, don't pay for a build. BotGhost's free plan also includes leveling and economy modules; BotGhost alternatives compares the builders.

Custom is worth it when XP comes from your own data, when seasons and resets follow your calendar, when shop items need to do things a dashboard can't express, when you want the leaderboard on your own site, or when levels are one part of a bot you already run.

What a custom leveling or economy bot costs

A leveling bot, or a simple economy with /daily and a few shop items, is Starter work: from $590, 1 to 2 weeks, with up to about five slash commands, source code, setup docs, 30 days of fixes and the first month of Care.

Levels and an economy with a shop, seasons, a web leaderboard or XP from outside data is Community, from $1,490, because the systems share a database and one integration. An admin dashboard, several servers or deep game integration is Platform, from $3,500. Tiers are on the pricing page, and what a custom Discord bot costs puts them next to market rates.

  • Up: importing old XP, voice XP, seasons with archives, a web leaderboard, game APIs.
  • Down: chat XP only, level roles, a leaderboard inside Discord.

How the build works

  1. Brief. Send the brief: what should earn XP, the roles, the shop and any data source. I reply within one business day.
  2. Spec. We agree on the numbers, which become the acceptance checklist. The Bot Blueprint ($249) does this as a call and written spec, credited if you order within 30 days.
  3. Build and test in a private server, with simulated activity so we can check the level curve and shop prices before launch.
  4. Launch on your own Discord application. You pay 50% to book the slot and 50% on acceptance.
  5. Care from $49 a month keeps it hosted and updated; hosting and Care plans has the details.

Technical notes

  • Intents. Guilds and GuildMessages for chat XP, GuildVoiceStates for voice XP; none of them privileged. Message Content only for text filters, and Server Members only to handle members who leave.
  • Permissions. Manage Roles, and the bot's role must sit above every level role, because Discord only lets a bot assign roles below its own highest role. A server can have 250 roles, so long level ladders use fewer roles with bigger steps. The permissions calculator builds the invite link.
  • Data. XP, coins, inventory, season archives and the audit log sit in a database you own, and nothing leaves it unless you ask for a web leaderboard or an export.

Common questions

Is MEE6 leveling still free?

Not on MEE6's own plan comparison as of September 2026, which marks XP and Levels and the Economy plugin as Premium features. Premium lists at $11.99 a month, $49.99 a year after the first year or $89.99 lifetime. Arcane and Tatsu still include message XP and level roles on their free tiers.

Does a leveling bot need the Message Content intent?

Not for XP based on activity. Without the privileged intent, the bot still receives an event for every message, only with the text left empty, so cooldowns and channel weights work. You need it if XP depends on what people write, such as skipping one-word messages or repeated text.

Can members buy coins or cash out winnings?

Not in bots I build. Discord's Gambling Policy counts virtual currency as real-world value once it can be exchanged for money or goods, so a chance-based game that uses paid or cash-out coins can become gambling. Selling a supporter role that earns bonus XP is common and avoids that problem; selling coins doesn't.

Can you move our existing levels to a custom bot?

Usually. If the current bot can export XP, or your members' levels are visible on a leaderboard page, I import them so nobody starts from zero. I check what your current bot allows before quoting.

Can members earn XP in voice channels?

Yes. The bot tracks voice minutes through voice state events, which need no privileged intent. I only count a minute when at least two people who aren't bots are in the channel, it isn't the AFK channel and the member hasn't deafened themselves.

Sources

Prices and features were checked on September 27, 2026.

  1. MEE6, Premium (prices and plan comparison)
  2. MEE6 Help, How to set up the Levels plugin (15 to 25 XP per message, role rewards need Premium, Monetize XP boosts)
  3. MEE6 Help, Members not getting XP (XP only from text channels)
  4. MEE6 Help, Economy plugin features and limitations
  5. Arcane, Premium (prices and free vs premium comparison; no economy listed)
  6. Tatsu, Support Us (server subscription prices and leveled roles)
  7. Tatsu, home page (server store and leaderboards)
  8. UnbelievaBoat, Premium (prices and plan comparison)
  9. UnbelievaBoat, Commands (command categories)
  10. Discord, Gambling Policy Explainer
  11. Discord Developer Policy (illegal online gambling)
  12. Discord Support, Monetization Policy (simulated casinos)
  13. UK Government, Response to the call for evidence on loot boxes in video games (July 2022)
  14. Discord Developer Docs, Gateway (intents and the Message Content intent)
  15. Discord Developer Docs, Getting started with privileged intent review (10,000-user threshold)
  16. Discord Developer Docs, Voice resource (voice state fields)
  17. Discord Developer Docs, Permissions (role hierarchy)
  18. Discord Support, Account caps, server caps and more (250 roles)
  19. BotGhost, home page (free plan includes leveling and economy)
  20. discord.js on npm

Tell me what your bot needs to do

Send a short brief. You get a reply within one business day with questions or a price range, and a fixed quote before any work starts.

Last updated 2026-09-27 by Adam Peleback.