没有出现在排行榜上的用户 mongoose discordjs

Posted

技术标签:

【中文标题】没有出现在排行榜上的用户 mongoose discordjs【英文标题】:Users not appearing on leaderboard mongoose discordjs 【发布时间】:2021-09-19 10:26:38 【问题描述】:

我在 discord.js 和 mongoose 中创建了一个排行榜,将用户从最富有到最贫穷进行排序。有些用户本应出现在排行榜上时却没有出现在排行榜上。这家伙有数万亿,但不在上面

这是我的排行榜代码


const  Message, DiscordAPIError  = require('discord.js')
const Client = require('../bot')
const stats = require('./stats')
const mongoose = require('mongoose')
const Discord = require('discord.js')
const commaNumber = require('comma-number')

module.exports = 
    name: `lb`,
    aliases:['leaderboard'],

    /**
     * @param Client client
     * @param Message message
     * @param String[] args
     */
run: async(client, message, args) => 
        
    const users = await client.schema.find()
    const Userid = users.User
    const lb = users
              .slice(0)
              .sort(( Bobux: a ,  Bobux: b ) => b - a)
              .map(
                
                ( User, Bobux , pos) => `$pos + 1. <@$User> - $commaNumber(Bobux) Bobux`,
              );

          const newnew =     lb.slice(0, 15)
              const embed = new Discord.MessageEmbed()
              .setTitle('Global Leaderboard For Most Bobux - Top 15')
              .setDescription(newnew)
              .setColor('RANDOM')
    message.channel.send(embed)
    

,
timeout: 5000


这是架构代码。它在主 bot.js 文件中


 this.schema = this.mongoose.model(
            `economy`,
            new this.mongoose.Schema(
                User: String,
                Bobux: Number,

            )
        );



        const self = this
        this.economy = 
            async getBal(User) 
                return await self.schema.findOne(
                    User
                ).then((d) => d ? d.Bobux : 0)
            ,

            async addBal(User, Bobux) 
                return await self.schema.findOne( User , async(err, data) => 
                    if(err) throw err
                    if(data) 
                        data.Bobux += Number(Bobux)
                     else 
                        data = new self.schema( User, Bobux )
                    
                    data.save()
                )
            ,
            async subBal(User, Bobux) 
                return await self.schema.findOne( User , async(err, data) => 
                    if(err) throw err
                    if(data) 
                        data.Bobux -= Number(Bobux)
                     else 
                        data = new self.schema( User, Bobux )
                    
                    data.save()
                )
            


我不确定为什么用户没有出现在排行榜上

抱歉,帖子太长了

【问题讨论】:

【参考方案1】:

因为您提到并且您的客户端(不和谐应用程序)尚未将该用户缓存在您的服务器中,因此它们不会仅与您一起显示。如果其他客户端尚未缓存该用户,则行为与其他客户端相同 我希望您获取 guildMember 并在排行榜中显示他们的昵称或用户名(未提及)以便很好地显示

【讨论】:

我真的不明白你想说什么@HellCatVn 对不起,请你改一下 我删除了提及,只是添加了一个 id,但它仍然不起作用 我会为你编辑一些代码。但是你能console.log(User)( User, Bobux , pos) =&gt; console.log(User)); 它记录了很多这样的用户ID。它可能正在记录数据库中我的 3500 个用户的所有用户 ID。这是前几个。编辑:我计数的字计数和正是996个IDS 635588494533722113 838248101231329281 780590882977349662 811796590124859393 818573703427391581 790131656534261761 825175841297530890 680264043587698840 807538068327235605 857556484074242078 跨度> 你的错误太多了,你需要 mongo db 来排序并首先获得***用户,而不是让所有尝试去做并先编辑你的帖子然后我们来这个问题

以上是关于没有出现在排行榜上的用户 mongoose discordjs的主要内容,如果未能解决你的问题,请参考以下文章

使用 MongoDB/Mongoose 的数据库排行榜

一般错误:1364:字段“dis”没有默认值

Mongoose 没有与 Namecheap 共享主机节点 js 应用上的数据库建立连接

Google Play 反盗版 - 排行榜中的作弊分数

在没有身份验证的情况下在 facebook 上发布(与用户交互)

Mongoose TypeError:用户不是构造函数