You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于WOK教程的Discord invites命令bot重复发送多条回复问题求助

你的代码出现多次回复的核心问题是将消息发送逻辑放在了遍历邀请数据的for循环内部,每遍历一个用户的邀请记录就会触发一次消息发送,最终就会输出和有效邀请人数量相等的多条消息。

修正后代码

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)!`
            }
            
            // 所有数据拼接完成后,统一构造Embed、仅发送一次消息
            // 可选优化:空值判断避免描述为空
            if(replyText === '') replyText = '当前暂无有效邀请记录'
            const embed = new Discord.MessageEmbed()
            embed.setTitle('Invites: ')
            embed.setDescription(replyText)
            message.reply(embed)
        })
    }
}

修改后即可实现预期的单条Embed回复效果。

内容的提问来源于stack exchange,提问作者PrezOfTheUnitedIdiots

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 04:18:00