如何解决Discord.js使用Better-sqlite3向XP系统添加排名功能
我目前正在尝试向我现有的XP系统中添加排名功能。我可以从数据库中返回一个列表,按照XP的顺序没问题,问题是映射和索引。我知道这应该很简单,但是我很挣扎。任何帮助将不胜感激
const { MessageEmbed } = require("discord.js");
const { cyan } = require("../../colours.json")
const Discord = require("discord.js");
const botconfig = require("../../botconfig");
const SQLite = require("better-sqlite3");
const sql = new SQLite('../../scores.sqlite');
module.exports = {
config: {
name: "rank",description: "Displays the users/@<users> current XP total & level",usage: " | <user>",category: "xp",accessableby: "Members",aliases: ["xp","level"]
},run: async (bot,message,args) => {
const member = message.mentions.members.first() || message.member || message.guild.members.cache.get(args[0])
score = bot.getScore.get(message.author.tag,message.guild.id);
console.log(score)
if (!score) {
score = {
id: `${message.guild.id}-${message.author.id}`,user: message.author.tag,guild: message.guild.id,points: 0,level: 1,};
}
const data = sql.prepare("SELECT * FROM scores WHERE guild = ? ORDER BY points DESC;").all(message.guild.id);
let curxp = score.points;
let curlvl = score.level;
let nxtLvlXp = curlvl * 300;
let difference = nxtLvlXp - curxp;
const embed = new Discord.MessageEmbed()
.setTitle("XP / LEVEL")
.setDescription(member.user.tag)
.setThumbnail(member.user.displayAvatarURL())
.setColor(cyan)
.addField('**' + "Level" + '**',curlvl,true)
.addField('**' + "XP" + '**',curxp,true)
// .addField('**' + "Rank" + '**',rank,true)
.setFooter(`${difference} XP til next level up`,bot.user.displayAvatarURL());
return message.channel.send({ embed });
// message.reply(`You currently have ${score.points} points and are level ${score.level}!`);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。