用户没有出现在排行榜猫鼬 discordjs
Users not appearing on leaderboard mongoose discordjs
我创建了一个排行榜,将 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()
})
}
我不确定为什么用户没有出现在排行榜上
抱歉久了post
因为您提到并且您的客户端(discord 应用程序)尚未在您的服务器中缓存该用户,因此他们不会只与您一起显示。如果其他客户端尚未缓存该用户,则行为与其他客户端相同
我希望您获取 guildMember 并在排行榜中显示带有标签的昵称或用户名(未提及)以便显示
我创建了一个排行榜,将 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()
})
}
我不确定为什么用户没有出现在排行榜上
抱歉久了post
因为您提到并且您的客户端(discord 应用程序)尚未在您的服务器中缓存该用户,因此他们不会只与您一起显示。如果其他客户端尚未缓存该用户,则行为与其他客户端相同 我希望您获取 guildMember 并在排行榜中显示带有标签的昵称或用户名(未提及)以便显示