You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Natsuki/commands/leveling/stats.js

41 lines
2.1 KiB

const Discord = require('discord.js');
const LXP = require('../../models/localxp');
module.exports = {
name: "stats",
aliases: ['level', 'xp', 'lvl'],
meta: {
category: 'Leveling',
description: "View your rank in the server",
syntax: '`stats [@user|userID]`',
extra: null,
guildOnly: true
},
help: new Discord.MessageEmbed()
.setTitle("Help -> Stats")
.setDescription("View your level and XP in the server, or someone else's")
.addField("Syntax", "`stats [@user|userID]`"),
async execute(message, msg, args, cmd, prefix, mention, client) {
if (!client.misc.cache.lxp.enabled.includes(message.guild.id)) {return message.channel.send("Your server doesn't have leveling enabled!");}
let u = args[0] ? (message.mentions.members.first() || message.guild.members.cache.get(args[0])) : message.member;
if (!u) {return message.channel.send("I can't find that user!");}
let xp;
if (!client.misc.cache.lxp.xp[message.guild.id] || !client.misc.cache.lxp.xp[message.guild.id][u.id]) {
let txp = await LXP.findOne({gid: message.guild.id});
if (!txp) {return message.channel.send("Your server doesn't have leveling enabled!");}
if (!txp.xp[u.id]) {return message.channel.send(`${u.id === message.author.id ? "You" : "That user"} doesn't have any leveling info available!`);}
xp = {xp: txp.xp[u.id][0], level: txp.xp[u.id][1]};
} else {xp = client.misc.cache.lxp.xp[message.guild.id][u.id];}
return message.channel.send(new Discord.MessageEmbed()
.setTitle(`${u.displayName}${u.displayName.toLowerCase().endsWith('s') ? "'" : "'s"} Stats`)
.setDescription("Local leveling stats")
.addField("Level", xp.level, true)
.addField("XP", `**${xp.xp}** of **${Math.ceil(100 + (((xp.level / 3) ** 2) * 2))}** needed to level up`, true)
.setThumbnail(client.users.cache.get(u.id).avatarURL({size: 2048}))
.setColor("c375f0")
.setFooter("Natsuki")
.setTimestamp()
)
}
};