我正在制作一个不和谐的机器人,最近遇到了一个问题,我正在为我的机器人制作一个经济系统,并且我使用了一些代码作为排行榜命令。问题是机器人一个一个地拿钱给会员,然后为第一个用户、第二个和第一个、第三个、第二个和第一个用户发送嵌入,这里有什么问题吗。
module.exports = {
name: "leaderboard",
description: "Check the sever's leaderboard",
async execute (client, message, args) {
let money = db.startsWith(`money_${message.guild.id}`, { sort: '.data' })
let content = "";
for (let i = 0; i < money.length; i++){
let user = client.users.cache.get(money[i].ID.split('_')[2]).username
content += `${i+1}. ${user} - ${money[i].data} \n`;
const embed = new Discord.MessageEmbed()
.setTitle(`${message.guild.name}'s Leaderboard`)
.setDescription(`${content}`)
.setColor('#FF4500')
.setTimestamp()
message.channel.send(embed);
}
}
}
答案 0 :(得分:0)
module.exports = {
name: "leaderboard",
description: "Check the sever's leaderboard",
async execute (client, message, args) {
let money = db.startsWith(`money_${message.guild.id}`, { sort: '.data' })
let content = "";
for (let i = 0; i < money.length; i++){
let user = client.users.cache.get(money[i].ID.split('_')[2]).username
content += `${i+1}. ${user} - ${money[i].data} \n`;
}
const embed = new Discord.MessageEmbed()
.setTitle(`${message.guild.name}'s Leaderboard`)
.setDescription(`${content}`)
.setColor('#FF4500')
.setTimestamp()
message.channel.send(embed);
}
}
您只是在 for 循环中拥有嵌入和发送嵌入的部分。
for 循环执行其中的代码,例如 100x。所以让我们说 money.length
是 2
。正如您对 let i = 0
所说的那样,它会从 0 开始,并将找到的用户存储在 user
中。然后它将该用户的位置、用户和资金添加到 content
字符串中。之后它会将嵌入发送到您的代码中,因为它在循环内。所有这些都将在循环的第二次运行中再次发生。所以它会发送两个嵌入。