Custom Commands docsCustom CommandsDocs

Search docs

Find a page, function or guide

HomeSupportDashboard

Getting started

  • Introduction
  • Your first command
  • How a command runs
  • Variables in replies
  • Text commands
  • Events
  • Using Slushy

Guides

  • Welcome messages
  • Role menus
  • Auto moderation
  • Automations
  • Forms
  • Tickets
  • Social alerts
  • Moderation commands
  • Levels and XP
  • Economy and coins
  • Ticket system with code
  • Giveaways
  • Poll
  • Button game
  • Reminders

Concepts

  • Buttons and menus
  • Forms
  • Saving data
  • Permissions and cooldowns
  • Limits and premium
  • Common mistakes

API reference

  • Response
  • Messages
  • Embeds
  • Members and roles
  • Channels
  • Storage
  • Checks
  • Views
  • Components
  • Modals
  • Interactions
  • Paginators
  • Web and files
  • Leveling
  • Scheduling
  • Server events and polls
  • Time
  • Waiting
  • Utilities
  • Objects
  • Event variables

Examples

  • /8ball
  • /coinflip
  • /avatar
  • /serverinfo
  • /rank
  • /remind

Guides

View .md

Levels and XP

Turn on built-in leveling. Members earn XP for chatting, level up, get roles, and see their rank card.

Leveling is built in. Turn it on and:

  • Members get XP (experience points) for chatting.
  • The bot posts a message when someone reaches a new level.
  • Members get roles at the levels you choose.
  • /rank shows a member's rank card, and /leaderboard shows the top 10.

It works on every plan, and /rank and /leaderboard do not count toward your command limit.

1. Turn it on#

On the dashboard, open Leveling and switch it on. Changes save by themselves.

Then sync your commands, or let auto-sync do it, so /rank and /leaderboard show up in Discord.

2. Choose how fast members level up#

Under Earning XP:

SettingWhat it doesStarts at
XP per messageA random amount in this range, per message.15 to 25
Wait before more XPMessages sent during the wait give nothing, so spam does not help.10 seconds
Voice XPXP for each minute in voice. Muted, deafened, alone or in the AFK channel earns nothing.off, 10 a minute
Daily streakA bonus on a member's first message each day: +10 XP per day in a row, up to +70. Missing a day starts over. Days follow your server's timezone. Premium.off

Under No XP, pick channels and roles that never earn XP. A thread counts as its channel.

When a member leaves the server, is kicked or is banned, their XP here is reset.

XP boosts#

Under XP boosts (premium), give a role or a channel more XP, from 1.1x to 3x. Add an event to give everyone more XP for a while, like a double XP weekend. You can add several. When more than one boost fits, the highest counts. Boosts don't add up, and they don't change the streak bonus.

How levels work#

Each level takes a bit more XP than the last, the same curve as MEE6:

LevelTotal XP
1100
2255
51,150
104,675
50268,375

3. The level-up message#

Under Level-up message, choose where it goes: the channel they chatted in, a channel you pick, their direct messages, or nowhere.

The message can use these placeholders:

PlaceholderBecomes
{user}A mention of the member
{user.name}Their display name
{level}The level they reached
{previous_level}Their level before
{rank}Their place on the leaderboard
{server}The server name

Turn on Add their rank card to send the member's card with the message.

4. Role rewards#

Under Role rewards, add a role for a level, like @Regular at level 5. Members get it when they reach that level, and anyone who skipped a level still gets it.

Switch off Keep lower rewards to keep only the highest reward role.

The bot needs a role higher than the reward roles, and reward roles cannot have staff permissions.

Role rewards need premium. If premium ends, your rewards are kept, but members don't get them until you upgrade again.

Top chatter#

Under Top chatter, pick a role. Every Monday, in your server's timezone, it goes to the member who earned the most XP last week, and the last holder loses it. Free.

5. The commands#

CommandStartsWho can use it
/rank [member]oneveryone
/leaderboard [page] [period]oneveryone
/give-xp member amountoffManage Server
/remove-xp member amountoffManage Server
/set-level member leveloffManage Server
/reset-xp memberoffManage Server

On the Commands tab, turn each one on or off, rename it, or change its description. To reset everyone's XP, use Reset XP on the Leaderboard tab.

period is All time, This week or This month. Weeks start on Monday and months on the 1st, in your server's timezone. The Leaderboard tab and the public page have the same three.

6. Design your own cards#

/rank and /leaderboard draw our cards until you pick your own. Under Cards, press Design to start from our card in the image template editor, or pick any image template you have.

Backgrounds are free. Designs, ready-made or your own, need premium. If premium ends, your picks are kept, and the cards go back to ours with your background.

A design can use these values (see the full list on the Leveling page):

ValueBecomes
{user.name}, {user.avatar}The member
{level}, {rank}, {xp_short}Their level, place and XP
{level_xp_short}, {next_level_xp_short}XP into this level, and what it needs
{progress}0 to 1, for a progress bar
{streak}Days in a row they chatted
{var.coins}, {member_var.bio}Your server and member variables

A leaderboard design repeats one row per member over the items list, with {item.name}, {item.avatar}, {item.level}, {item.xp_short} and {rank} (11, 12… on page 2). {period} is All time, This week or This month.

7. Do more with level-ups#

  • Automations: use the Levels up trigger. It can fire on every level or at one level, and gives you {level.new}, {level.previous} and {level.xp}.
  • Scripts: make a Level up event. It gets user, level, previous_level and xp.
  • Your own commands: read and change XP with get_level, add_xp and the rest. See Leveling.

Moving from the old Mongo version#

This guide used to build leveling from a Message event and a Mongo database. To move your members' XP over, run this once from any command, then delete the old event:

python
levels = SlashMongo("levels")
moved = 0
for doc in await levels.find({"moved": {"$ne": True}}):
    if moved >= 100:
        break
    set_xp(int(doc["_id"]), int(doc.get("xp", 0)))
    await levels.update_one({"_id": doc["_id"]}, {"$set": {"moved": True}})
    moved += 1
set_content(f"Moved {moved} members.")

A run can change XP 100 times, so run it again until it says it moved 0. Each run skips members it already moved. Our curve is a little different, so some levels will change.

PreviousModeration commandsNext Economy and coins

On this page

  • 1. Turn it on
  • 2. Choose how fast members level up
  • XP boosts
  • How levels work
  • 3. The level-up message
  • 4. Role rewards
  • Top chatter
  • 5. The commands
  • 6. Design your own cards
  • 7. Do more with level-ups
  • Moving from the old Mongo version
Custom CommandsCustom Commands

The #1 Custom Commands Discord bot — commands, tickets, forms and levels, all from one dashboard.

Join the support server

Product

  • Overview
  • Why us?
  • Premium
  • Template shop

Features

  • AI Agent
  • Reaction roles
  • Welcome messages
  • Tickets
  • Forms
  • Auto moderation
  • Leveling
  • Global leaderboard
  • Embed builder
  • Social alerts
  • Custom bot

Resources

  • Docs
  • Blog
  • Support
  • Dashboard

Company

  • Privacy
  • Terms
  • Contact
contact@ccbot.app

2 Frederick Street, London, WC1X 0ND

Payments secured by Stripe

© WEiRDSOFT LTD. All rights reserved.

Custom Commands