Package detail

@cxstin/discord-levels

cxstin34MIT1.0.5

A package that makes your life easier when it comes to making a leveling system for your discord.js bot!

xp, level, levelling system, discord.js

readme

Discord Levels

  • An easy to use xp framework made for discord bots that uses MongoDB!

Download

You can download it using any node package manager.

NPM

npm install discord-levels

Yarn

yarn add discord-levels

PNPM

pnpm add discord-levels

Setting Up

Now that you have the package downloaded, you can get started with setting it up!

First, you need to import the module into your project.

const Levels = require('discord-levels')

After that, you need to create a new instance of the Levels class and provide a valid mongodb database url.

const levels = new Levels({ mongodbURL: "mongodb://127.0.0.1" })

To start using the xp system, you need to run the init method

levels.init();

Methods

  • Method arguments marked with a ? are optional.

getUser(userId: string, guildId?: string) --> UserLevelProfile

Fetches the level profile of a user, or creates a new one if it doesn't exist.

deleteUser(userId: string, guildId?: string) --> UserLevelProfile

Deletes the level profile of a user.

getGuild(guildId: string) --> UserLevelProfile[]

Fetches the level profiles of all users in a guild.

deleteGuild(guildId: string) --> UserLevelProfile[]

Deletes the level profiles of all users in a guild.

xpFor(level: number) --> number

Returns the amount of needed xp for a specific level.

getLeaderboard(guildId: string, limit?: number) --> UserLevelProfile[]

Fetches a specific amount of users in the guild and orders them from the highest to lowest level.

User Methods

UserLevelProfile.setLevel(level: number) --> void

Changes the level of an user to a specific value.

UserLevelProfile.addLevel(level: number) --> void

Adds a specific amount of levels to a user.

UserLevelProfile.removeLevel(level: number) --> void

Removes a specific amount of levels from a user.

UserLevelProfile.setXP(xp: number) --> void

Changes the xp of an user to a specific value.

UserLevelProfile.addXP(xp: number) --> void

Adds a specific amount of xp to a user.

UserLevelProfile.removeXP(xp: number) --> void

Removes a specific amount of xp from a user.

UserLevelProfile.hasLevelledUp() --> boolean

Returns true if the user has reached a new level.

Examples

Add XP to a user when they send a message and check if the user has levelled up.

const { Client } = require('discord.js');
const Levels = require('discord-levels');

const client = new Client({ intents: ["GuildMembers", "GuildMessages"] });
const levels = new Levels({ mongodbURL: "mongodb://127.0.0.1" });

levels.init();

client.on("messageCreate", async (message) => {
    if (message.author.bot) return; // Return if the author of the message is a bot

    const userLevelProfile = await levels.getUser(message.author.id, message.guild.id); // Fetch the user
    const xpAmount = Math.floor(Math.random() * 35) + 15; // Get a random number from 15 to 35

    userLevelProfile.addXP(xpAmount); // Add the XP to the user profile.

    if (userLevelProfile.hasLevelledUp()) // Check if the user has levelled up
        message.channel.send({ content: `Congrats, ${message.author}! You have advanced to level **${userLevelProfile.level}**!` })
})

client.login("YOUR_TOKEN");