【问题标题】:discord.js - Leaderboard / top command showing wrong orderdiscord.js - 排行榜/顶部命令显示错误的顺序
【发布时间】: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;

请注意,这在很大程度上是概念验证,而不是用于生产。 任何帮助表示赞赏!

【问题讨论】:

    标签: node.js sequelize.js discord.js


    【解决方案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 。这成功了,非常感谢!
    猜你喜欢
    • 2020-11-22
    • 1970-01-01
    • 2021-05-14
    • 2021-09-04
    • 2021-09-03
    • 2021-03-12
    • 2014-07-20
    • 2012-05-03
    • 2020-07-29
    相关资源
    最近更新 更多