我的机器人正在发送多条消息 discord.js

时间:2021-01-03 18:17:33

标签: javascript node.js discord.js

我正在制作一个不和谐的机器人,最近遇到了一个问题,我正在为我的机器人制作一个经济系统,并且我使用了一些代码作为排行榜命令。问题是机器人一个一个地拿钱给会员,然后为第一个用户、第二个和第一个、第三个、第二个和第一个用户发送嵌入,这里有什么问题吗。

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);
            
        }
    }
}

 

1 个答案:

答案 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.length2。正如您对 let i = 0 所说的那样,它会从 0 开始,并将找到的用户存储在 user 中。然后它将该用户的位置、用户和资金添加到 content 字符串中。之后它会将嵌入发送到您的代码中,因为它在循环内。所有这些都将在循环的第二次运行中再次发生。所以它会发送两个嵌入。