Skip to content
All docs

Guides

Free Discord Leveling Bot: XP, Levels and Role Rewards

Award XP per message, track levels, announce level-ups and grant role rewards on your own Discord bot: free, no code, fully configurable.

5 min read

If you're searching for a Discord leveling bot, NoriaFlow's Leveling node covers the whole job (XP per message, automatic levels, role rewards) free and running on your own bot.

Why people look for a leveling bot

  • Leveling sits behind a paywall on some bots: features like a cooldown, XP range, or channel exclusion are often gated behind a premium tier.
  • Flat XP is easy to game: a bot that awards the exact same XP per message rewards spamming short messages as much as real conversation.
  • No channel control: XP farmed in a bot-commands or rules channel dilutes what leveling is meant to reward.

How NoriaFlow's leveling works

  • XP per message, with an optional range: award a flat amount, or a random range (e.g. 15–25) each message so it's harder to game by message-spamming.
  • Cooldown between XP gains: a member only earns XP once per configurable window, however often they message.
  • Channel exclusion: list channels that never earn XP, like #bot-commands or #rules.
  • Role rewards per level: grant a role the first time a member reaches a level. Members collect every reward they pass by default, or wear only their highest rank if you prefer.
  • Bonus and no-XP roles: boosters or subscribers earn a multiple of the normal award; muted members earn nothing at all.
  • Level-up announcements, or silent: announce in the same channel, a dedicated channel, or turn announcements off entirely while still granting role rewards.
  • Free in beta: the whole feature is included at no cost while NoriaFlow is in open beta.

Every Leveling option, explained

Attach the node to a Discord Message trigger and configure:

  • Server: XP is tracked separately per server, so one bot can level several communities independently.
  • XP per message: the amount awarded (default 15). Set the optional Maximum XP higher to award a random amount in that range instead. E.g. 15–25, which makes spam farming less effective.
  • XP needed per level: level = total XP divided by this number, rounded down. With the default of 100, a member hits level 3 at 300 XP. Raise it for slower, more prestigious levels.
  • Cooldown: a member earns XP at most once per this many seconds (default 60), no matter how fast they type.
  • No-XP channels: messages in these channels never earn XP.
  • Announcement channel: leave empty to celebrate the level-up right where the message was sent, or route all announcements to one channel like #level-ups.
  • Level-up message: your own text, where {{user}} becomes a mention, {{level}} the new level and {{rank}} their place on the server board. The editor may flag these as unknown variables. That warning is expected and harmless, since the node fills them in itself.
  • Silent level-ups: role rewards keep flowing, announcements stop entirely.
  • Roles that earn no XP: members holding any of these gain nothing, which is how a muted role stops counting.
  • Bonus XP roles and multiplier: members holding any of these earn the multiplier times the normal award. Holding several bonus roles still multiplies once, not once per role.
  • Role rewards: one role per chosen level, granted the first time a member reaches it.
  • Keep reward roles from earlier levels: on by default, so members collect every tier they pass. Turn it off for rank-style roles, where reaching a new tier swaps the previous one out.

The node also outputs the member's total XP, current level, a "leveled up?" flag and their rank on the server. You can branch after it: for example, an If node that fires a special congratulations only at level 50.

Add a leaderboard

The Leveling node handles XP and roles. For a public "most active members" ranking, add the Scores node. On each message it increments a per-member score on a named board (scope it per server with a key like xp:{{guild_id}}). Its Top operation reads back a real Top-N ranking (rank, member, score) that you can post from a slash command or a weekly Schedule trigger. An optional expiry turns it into a monthly board that resets itself. The Discord Activity Leaderboard template wires the whole thing.

TriggerLoading step…
ActionLoading step…
ActionLoading step…

Moving your community from another leveling bot

Honest answer first: there is no XP import. Levels on NoriaFlow start at zero. Here's how communities make that switch without a revolt:

  1. Frame it as a season reset. Announce a date, call it Season 2, and make the fresh start the point. Everyone gets a shot at the top again.
  2. Keep old reward roles as legacy badges. Don't delete the roles your previous bot granted; rename them ("OG Level 50") so long-time members keep their status.
  3. Match the feel. Set an XP range and a one-minute cooldown so progression feels familiar from day one.
  4. Run both briefly, announce once. Keep your old bot running during a short overlap if you want, but disable its level-up messages so members don't get doubled announcements.

Set it up

  1. Connect your own Discord bot to NoriaFlow.
  2. Open the Discord Activity Leaderboard template or add a Leveling node after a Discord Message trigger.
  3. Set your XP amount (or range), cooldown, and any role rewards per level.
  4. Test, then Activate: members start earning XP on their next message.

Make it your own

  • Reward milestones, not just activity: grant a role at level 5, another at level 10, and members keep both.
  • Keep it low-key: turn off the public announcement and let role rewards do the talking.
  • Gate other automations on it: a level-milestone role can also become a required role for a giveaway, so only active members can enter.

That's a leveling system you fully control: free during the beta, no code. Start building free, see what else you can build on the same bot in the template library, or build your first workflow to get started.

Setup checks and next steps

  • Check the selected bot, server and destination channel. Role actions also require the bot role to sit above the role it changes.
  • Test with a dedicated channel or member before enabling this automation for everyone.
  • If a step fails, inspect its error and inputs rather than reconnecting every account.

See the extension setup guide for adding and reusing services, the node reference for parameters, and testing and debugging for execution diagnostics.

Frequently asked questions

Is there a free Discord leveling bot?

Yes. NoriaFlow's Leveling node is free during the open beta: it awards XP per message, tracks levels, announces level-ups, and grants role rewards, with none of the settings locked behind a premium tier.

Can I randomize the XP per message instead of a flat amount?

Yes. Set a minimum and maximum XP per message and NoriaFlow awards a random amount in that range each time, instead of the same flat number every message. Harder to farm by spamming short messages.

Can I exclude certain channels from earning XP?

Yes. List channels (like a bot-commands or rules channel) where messages never earn XP.

Can I grant a role automatically at a certain level?

Yes. Set up role rewards per level. By default a member keeps every earlier reward role as they level up; turn off 'Keep reward roles from earlier levels' for rank-style roles, where a new tier swaps the previous one out.

Can level-ups be silent, with no announcement?

Yes. A silent mode still grants role rewards but skips posting a level-up message anywhere.

Can I import levels and XP from the bot I use today?

No. There is no XP import, and we won't pretend otherwise. XP starts fresh on NoriaFlow. Most communities frame the switch as a new season: keep the old reward roles as legacy badges, announce a reset date, and let everyone race up the new board together.

Can I show a leaderboard of the most active members?

Yes. Pair a Message trigger with the Scores node to count activity per member, then read the Top 10 back on demand, for example from a slash command or a weekly scheduled post. The Discord Activity Leaderboard template wires this for you.