Server Configuration

Levels

Reward activity with XP, ranks, and automatic role rewards.

Overview

greed features a robust, dual-track leveling system that rewards both text and voice activity. With real-time stats, dynamic rank cards, and automated role rewards, it's designed to keep your community engaged.

Getting Started

The leveling system is enabled by default. You can configure it using the following commands:

  • ,level text: Toggle text-based XP earning.
  • ,level voice: Toggle voice-based XP earning.
  • ,level channel #channel: Set the channel for level-up announcements.
  • ,level message [script]: Customize the level-up message (or disable to turn off messages).

Earning XP

Members earn XP passively by participating in the server.

Text XP

  • Earned by sending messages in text channels.
  • Includes anti-spam protection to ensure fair leveling.

Voice XP

  • Earned by staying in voice channels.
  • Requires members to be unmuted and not alone in a channel to prevent farming (use ,level antiafk to enforce this).

Commands for Members

These commands allow users to track their own progress and see how they compare to the rest of the community.


Rank Card

Members can recolour their own rank card — no permissions needed.

  • ,rankcard: Show your rank card options (alias: ,rc).
  • ,rankcard color [hex]: Set your accent colour, or pass reset to go back to the default (aliases: colour, accent).

Administrative Commands

Manage the leveling system and adjust user progress when necessary.


Level-Up Messages

Customize the message greed sends when a member reaches a new level. This feature gives you full control over congratulations announcements, achievements, and level-up feedback.

Quick Setup

Set the announcement channel

Messages post to your designated level-up channel:

,level channel #level-ups

Requires Send Messages permission. Messages only send if both channel and message are configured.

Write your message template

Use variables and embeds to customize the announcement:

,level message {embed}{title: Level Up!}{description: {user.mention} reached level {level}!}

Test the message

Preview how it renders:

,level message [script]

Run without arguments to view the current template.

Enable or disable messages

Turn off announcements entirely if preferred:

,level message disable

Run the same command again with a template to re-enable.

Send to DM instead

Optionally send level-ups privately:

,level dm

Toggle to switch between channel announcements and DMs.


Available Variables

Level-up messages are rendered when a member levels up and have access to:

  • {level.*} — Level progression context (shown below)
  • {user.*} — The member who leveled up
  • {guild.*} — Your server's properties

Level Variables

VariableDescriptionExample
{level}New level reached5
{level.current}Current level (same as {level})5
{level.next}Next level to reach6
{level.rank}Member's position on leaderboard3 or N/A
{level.xp}Total XP accumulated1234
{level.next_xp}XP required to reach next level567

User Variables

VariableDescriptionExample
{user}Usernamemoonpie
{user.mention}Mention tag<@123456789>
{user.name}Username onlymoonpie
{user.id}Discord ID123456789
{user.avatar}Avatar URLhttps://cdn.discordapp.com/avatars/...
{user.display_name}Display name or nicknamemoonpie
{user.top_role}Highest role nameMember
{user.color}Hex color of highest role#FF0000

Guild Variables

VariableDescriptionExample
{guild}Server nameMy Awesome Server
{guild.name}Server nameMy Awesome Server
{guild.id}Server ID987654321
{guild.member_count}Member count (formatted)1,234
{guild.icon}Server icon URLhttps://cdn.discordapp.com/icons/...
{guild.boost_count}Number of boosts5
{guild.boost_tier}Boost level1, 2, 3, or No Level

Template Examples

Simple Announcement

Copy and paste to try:

,level message {user.mention} reached level {level}! Congratulations!

Rich Embed with Progress

,level message {embed}{color: 5814783}{title: Level Up!}{description: {user.mention} just reached level {level}!}{field: Rank|{level.rank}}{field: Total XP|{level.xp}}{field: To Next Level|{level.next_xp} XP needed}{thumbnail: {user.avatar}}

Milestone Callout

,level message {embed}{color: 16711680}{title: New Level: {level}}{description: Congratulations {user.mention}! You've reached level {level} in {guild.name}.}{field: Server Member|Rank {level.rank} out of {guild.member_count}}{footer: Keep grinding!}

Customization

Using Embeds

Leverage embed syntax for rich formatting:

,level message {embed}{color: 5814783}{title: Level {level}}{description: {user.mention} is now level {level}!}{field: Progress to {level.next}|{level.next_xp} XP needed}{thumbnail: {user.avatar}}{footer: {user.id}}

Using Custom Scripts

Save a reusable level-up template:

,custom save levelup-announce {embed}{color: 5814783}{title: Level {level}}{description: {user.mention} leveled up!}{thumbnail: {user.avatar}}

Then apply it:

,level message {cscript:levelup-announce}

Custom script names must start with a letter or number and contain only lowercase letters, numbers, hyphens, and underscores (max 32 characters). You can save up to 100 custom scripts per server.


Management

View the Current Template

See what message is configured:

,level message

If disabled, it will display "Disabled". If default, it shows the default template.

Review Your Template

There is no dedicated preview command for level-up messages. Run the message command with no script to print the stored template back:

,level message

To see it rendered for real, cross a level boundary yourself — temporarily lower the requirement so the next message fires in your configured channel.

Disable Level-Up Messages

Turn off announcements completely:

,level message disable

Re-enable with a New Template

Set a fresh template to re-enable:

,level message {embed}{title: Level {level}}{description: {user.mention} is now level {level}}

Toggle DM vs. Channel

Switch between announcing in the level-up channel or sending messages privately:

,level dm

Run again to toggle back to channel announcements.


Troubleshooting

Messages Aren't Sending

  1. Channel Not Configured: Run ,level channel #channel to set the announcement channel.
  2. Message Disabled: Verify with ,level message. If it says "Disabled", run the command again with a template.
  3. No Permission: Confirm greed has Send Messages in the configured channel.
  4. Member Left Before Message Sent: If a member levels up and immediately leaves, the message may fail. This is expected behavior.
  5. User Has DMs Closed: If using ,level dm, members with closed DMs will not receive the message.

Template Renders Empty or Broken

  • Check variable spelling: {level} not {lvl}, {user.mention} not {user.tag}.
  • Verify embed syntax matches the embed resource guide.
  • Run ,level message with no arguments to print the stored template back and inspect it.
  • Check that custom script names exist: ,custom list shows all saved scripts.

Embeds Not Displaying

  • Ensure color values are valid (decimal or hex format).
  • Check field names and descriptions are not empty.
  • Review the embed syntax reference for proper structure.
  • Run ,level message with no arguments to confirm what is currently stored.

Level-up messages are sent in the configured announcement channel or as DMs, depending on your settings. If the channel is deleted or greed loses permission, messages silently fail. Verify permissions and channel configuration when troubleshooting.


Rank card styling

The rank card that ,rank sends — and that a level-up posts when the image card is enabled — can be restyled per member.

This needs User Premium, or a vote for greed. Everyone else gets the default card, which already tints itself from the member's avatar.

The live editor

The dashboard is the easiest way in: Levels → Rank card. Every control re-renders the real card through the same renderer that sends it in Discord, so the preview is the artefact rather than an approximation of it.

From Discord

,rankcard color (hex)
,rankcard color reset

The command covers the accent only — the rest of the card is edited on the dashboard.

Anything you leave alone keeps its default, so a card you have only set an accent on looks exactly as it did before.