sqlite - 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}!`);
}
}
解决方案
推荐阅读
- azure - azure 订阅“您没有资格获得 Azure 订阅”
- php - instagram 风格探索页面 mysql 随机帖子无限滚动
- android - 使用 tts 引擎 com.google.android.tts 在 Android 应用程序中向用户显示 Voice 对象的正确方法是什么?
- qt - 如何在 Qt Designer 中设置主题?
- azure - Azure 是否支持整页缓存?
- python - 是否有检查列表连续性的功能?
- c# - 过滤所选字符串后,我可以将列表转换为类吗?
- html - 处理 CSS 中的媒体查询
- react-native - 任务 ':app:processDebugResources' 执行失败。错误
- visual-c++ - 强制在 Microsoft 混合系统上使用集成 (Intel) 显卡