邀请命令机器人回复多次发送消息
Invites command bot reply sending message multiple times
我正在使用 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)
}
})
}
}
Fyi 上次我 post 编辑这个我忘了 post 代码所以是的,那是愚蠢的我的错。
这是因为您在 for...of
循环中有 message.reply
。
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
}
您可能打算将它放在循环之外,以便它在所有迭代后发送生成的嵌入。
我正在使用 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)
}
})
}
}
Fyi 上次我 post 编辑这个我忘了 post 代码所以是的,那是愚蠢的我的错。
这是因为您在 for...of
循环中有 message.reply
。
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
}
您可能打算将它放在循环之外,以便它在所有迭代后发送生成的嵌入。