0

我正在使用 WOK 教程中的邀请跟踪器,尽管代码工作得非常好,并且我使用的命令处理程序有 0 个问题,但由于某种原因,机器人回复了多条消息而不是 1,如图所示:

在此处输入图像描述

这是我用于邀请命令的代码:

const Discord = require("discord.js")

module.exports = {
    commands: 'invites',
    callback: (message) => {
        const { guild } = message
        guild.fetchInvites().then((invites) => {
            const inviteCounter = {}

            invites.forEach((invite) => {
                const { uses, inviter } = invite
                const { username, discriminator } = inviter

                const name = `${username}#${discriminator}`

                inviteCounter[name] = (inviteCounter[name] || 0) + uses
            })

            let replyText = ''

            const sortedInvites = Object.keys(inviteCounter).sort((a, b) => inviteCounter[b] - inviteCounter[a])

            for (const invite of sortedInvites) {
                const count = inviteCounter[invite]
                replyText += `\n${invite} has invited ${count} member(s)!`

                const embed = new Discord.MessageEmbed()
                embed.setTitle('Invites: ')
                embed.setDescription(replyText)
                message.reply(embed)
            }
        })
    }
}

仅供参考,上次我发布此内容时,我忘了发布代码,所以是的,这很愚蠢。

4

1 回答 1

1

这是因为你有message.reply一个for...of循环。

for (const invite of sortedInvites) {
                const count = inviteCounter[invite]
                replyText += `\n${invite} has invited ${count} member(s)!`

                const embed = new Discord.MessageEmbed()
                embed.setTitle('Invites: ')
                embed.setDescription(replyText)
                message.reply(embed) //here
            }

您可能打算将它放在循环之外,以便在所有迭代之后发送结果嵌入。

于 2021-08-08T03:36:28.980 回答