基于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
相关产品推荐
相关产品推荐

