discord.js - 排行榜/顶部命令显示错误的顺序
Posted
技术标签:
【中文标题】discord.js - 排行榜/顶部命令显示错误的顺序【英文标题】:discord.js - Leaderboard / top command showing wrong order 【发布时间】:2021-04-10 20:23:59 【问题描述】:我最近在排行榜命令中以错误的顺序显示用户时遇到了很多麻烦。
我正在使用 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;
请注意,这在很大程度上是概念验证,而不是用于生产。 任何帮助表示赞赏!
【问题讨论】:
【参考方案1】:这是来自 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'),
【讨论】:
老实说,我真的不知道这是怎么从我的脑海中消失的,我记得尝试过,但没有成功!我想我试图在对象(用户)上使用 .sort 。这成功了,非常感谢!以上是关于discord.js - 排行榜/顶部命令显示错误的顺序的主要内容,如果未能解决你的问题,请参考以下文章
排行榜命令中未定义的用户名 [ quick.db / discord.js ]
尝试为我的 discord.js 机器人创建排行榜命令,但除第一名之外的所有值都保持为 0