node.js - discord.js - 排行榜/顶部命令显示错误的顺序
问题描述
最近,我在排行榜命令中以错误的顺序显示用户时遇到了很多麻烦。
我正在使用 DiscordJS 主分支和 Sequelize v6
排行榜命令文件:
const { MessageEmbed } = require("discord.js");
exports.run = async (client, message, args) => {
const { Users } = require("../functions/database");
let users = await Users.findAll({ limit: 10, order: [['count', 'DESC']] });
for (const user of users) {
await client.users.fetch(user.userid);
}
let embed = new MessageEmbed()
.setAuthor("Middleman Leaderboard", `${client.user.displayAvatarURL({ dynamic: true })}`)
.setDescription(users.map((user, position) => `**${position + 1}**. ${(client.users.cache.get(user.userid).username)}: ${user.count} Points`))
.setThumbnail('https://i.ibb.co/ByRSBmB/hp.png')
.setColor("#d70069");
await message.reply(embed)
}
Sequelize 数据库模型:
const Users = sequelize.define('users', {
userid: {
type: Sequelize.INTEGER,
},
count: Sequelize.INTEGER,
});
exports.Users = Users;
请注意,这在很大程度上是一个概念证明,而不是用于生产。任何帮助表示赞赏!
解决方案
这是 discordjs.guide 的解决方案:
users.sort((a, b) => b.balance - a.balance)
.filter(user => client.users.cache.has(user.user_id))
.first(10)
.map((user, position) => `(${position + 1}) ${(client.users.cache.get(user.user_id).tag)}: ${user.balance}`)
.join('\n'),
推荐阅读
- mysql - 对 1000 个不同的值使用 IN 子句是否有效?
- google-cloud-platform - 如何从 DataFlow 模板中提取 REST API 参数?
- elasticsearch - Logstash 不导入 txt 文件中的最后一行
- oracle - 触发 Oracle || 插入后将记录备份到另一个表
- node.js - nodejs - 无法使用 gRPC 和 webpack 解析“child_process”
- javascript - 如何在退格键按下时删除 OTP 用户输入
- javascript - Next.js 和 React 设置中的 FontAwesome 渐变颜色
- jmeter - 想要在 JMeter 中并行执行所有线程
- postgresql - PostgreSQL 日志中的空语句记录是什么?
- terraform - Terraform 版本升级