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");