LevelManager

The hub of the library, this class is responsible for managing the ranks, achievements, and users from database. If you want to override the function that calculate the xp to level up, then visit Override XP Function.

Constructor

new LevelManager(client, options)

Parameters:
NameTypeDescription
clientDiscord.ClientDiscord client.
optionsLevelManagerOptionsOptions for the level hub.
Fires:
  • LevelManager#event:managerReady - When the manager is ready.
Throws:
  • - If some property of options is missing, or if options is undefined.
    Type
    MissingValue
  • - If some property of options is not the correct type.
    Type
    InvalidValue

Extends

  • EventEmitter

Members

achievement :Array.<Achievement>

- The default achievements when create a new guild entry
Type:

autoSave :Boolean

- If the data will be saved automatically
Type:
  • Boolean

client :Discord.Client

- Discord client
Type:
  • Discord.Client

eventsPath :String

- The path to the events folder
Type:
  • String

guilds :GuildManager

- The guild manager

maxXpToLevelUp :Number

- The max xp to level up
Type:
  • Number

mongoUri :String

- MongoDB Uri
Type:
  • String

ranks :Array.<Rank>

- The default ranks when create a new guild entry
Type:

saveInterval :Number

- The interval to save the data in the database
Type:
  • Number

xpFunction :function

- The function that calculate the xp to level up
Type:
  • function

Methods

(async) addXp(member, xp, guildopt) → {Promise.<boolean>}

Add a certain amount of xp to a member of a guild, there is no need to create a user entry, it will be created automatically if it doesn't exist.
Parameters:
NameTypeAttributesDescription
memberDiscord.GuildMemberThe member that will receive the xp.
xpNumberThe amount of xp that will be added.
guildDiscord.Guild<optional>
The guild where the member is.
Fires:
  • LevelManager#event:levelUp - When a member level up.
  • LevelManager#event:xpAdded - When a member receives xp.
Throws:
  • - If member or xp is missing.
    Type
    MissingValue
  • - If member or xp is invalid.
    Type
    InvalidValue
Returns:
- Return true if the member has leveled up.
Type: 
Promise.<boolean>

(async) degradeRank(member, guildIdopt) → {Promise.<UserCard>}

Manually rank down a member.
Parameters:
NameTypeAttributesDefaultDescription
memberDiscord.GuildMemberThe member that will be ranked down.
guildIdDiscord.Snowflake<optional>
'global'The guild where the member is.
Fires:
  • LevelManager#event:rankDown - When a member rank down.
Throws:
  • - If member is missing.
    Type
    MissingValue
  • - If member or guildId is invalid.
    Type
    InvalidValue
Returns:
- Return the user data of the member.
Type: 
Promise.<UserCard>

leaderboard(guildIdopt) → {Array.<UserCard>}

Create an array of the top members of the guild (you can put a limit).
Parameters:
NameTypeAttributesDefaultDescription
guildIdLeaderboardOptions<optional>
{ guildId: 'global', limit: 10 }The guild where the leaderboard will be.
Throws:
  • - If guildId is missing.
    Type
    MissingValue
  • - If guildId or limit is invalid.
    Type
    InvalidValue
Returns:
- Return an array of the top members.
Type: 
Array.<UserCard>

(async) levelUp(member, guildIdopt) → {Promise.<UserCard>}

Manually level up a member.
Parameters:
NameTypeAttributesDefaultDescription
memberDiscord.GuildMemberThe member that will be leveled up.
guildIdDiscord.Snowflake<optional>
'global'The guild where the member is.
Fires:
  • LevelManager#event:levelUp - When a member level up.
Throws:
  • - If member is missing.
    Type
    MissingValue
  • - If member or guildId is invalid.
    Type
    InvalidValue
Returns:
- Return the user data of the member.
Type: 
Promise.<UserCard>

(async) rankUp(member, guildIdopt) → {Promise.<UserCard>}

Manually rank up a member.
Parameters:
NameTypeAttributesDefaultDescription
memberDiscord.GuildMemberThe member that will be ranked up.
guildIdDiscord.Snowflake<optional>
'global'The guild where the member is.
Fires:
  • LevelManager#event:rankUp - When a member rank up.
Throws:
  • - If member is missing.
    Type
    MissingValue
  • - If member or guildId is invalid.
    Type
    InvalidValue
Returns:
- Return the user data of the member.
Type: 
Promise.<UserCard>

(async) removeLevel(member, guildIdopt) → {Promise.<UserCard>}

Decrease the level of a member.
Parameters:
NameTypeAttributesDefaultDescription
memberDiscord.GuildMemberThe member that will be leveled down.
guildIdDiscord.Snowflake<optional>
'global'The guild where the member is.
Fires:
  • LevelManager#event:levelDown - When a member level down.
Throws:
  • - If member is missing.
    Type
    MissingValue
  • - If member or guildId is invalid.
    Type
    InvalidValue
Returns:
- Return the user data of the member.
Type: 
Promise.<UserCard>

(async) saveData() → {Promise.<void>}

Save all of guilds data to your database.
Returns:
Type: 
Promise.<void>

Events

levelDown

Emits when a member has leveled down.
Properties
NameTypeDescription
userUserCardThe user that leveled down.
guildGuildThe guild where the user is.

levelUp

Emits when a member has leveled up.
Properties
NameTypeDescription
userUserCardThe user that leveled up.
guildObjectGuildThe guildObject where the user is.

managerReady

Emitted when the manager is ready.
Properties
NameTypeDescription
clientDiscord.ClientDiscord client.

rankDown

Emits when a member has ranked down.
Properties
NameTypeDescription
userUserCardThe user that ranked down.
guildGuildThe guild where the user is.
rankRankThe new rank of the user.

rankUp

Emits when a member has ranked up.
Properties
NameTypeDescription
userUserCardThe user that ranked up.
guildGuildThe guild where the user is.
rankRankThe new rank of the user.

xpAdded

Emits when a member receives xp.
Properties
NameTypeDescription
userUserCardThe user that received the xp.
guildObjectGuildThe guildObject where the user is.
xpNumberThe amount of xp that the user received.