Я изменил код, чтобы сохранить набор идентификаторов сообщений из отправленных отчетов.
Когда отчет нужно отредактировать, его идентификатор извлекается из коллекции и используется для получения фактического сообщения , затем создается новое вложение из старого с увеличенным вторым полем. Наконец, сообщение редактируется с новым вложением, содержащим увеличенное поле.
client.on("messageReactionAdd", async (messageReaction, user) => {
const msg = messageReaction.message;
if (messageReaction.emoji.name == "❗") {
if (messageReaction.count > 1) {
const message = (await msg.guild.channels.cache.get(config.channels.report).messages.fetch()).find(message => message.embeds[0].fields[3].value === msg.id);
const embed = new Discord.MessageEmbed(message.embeds[0])
.spliceFields(1, 1, {name: "Amount", value: messageReaction.count, inline: true});
message.edit(embed);
} else {
const embed = new Discord.MessageEmbed()
.setColor("#ff9e00")
.setDescription("§ Report")
.setFooter(`${msg.member.user.tag}`, msg.member.user.displayAvatarURL())
.setTimestamp()
.addFields(
{name: "Message", value: `[${msg.cleanContent}](${msg.url})`, inline: false},
{name: "Amount", value: messageReaction.count, inline: true},
{name: "Channel", value: `${msg.channel.name}`, inline: true},
{name: "Message ID", value: msg.id, inline: false});
msg.guild.channels.cache.get(config.channels.report).send(embed);
}
};
});
Вот дополнительный код, если вы хотите редактировать отчеты при удалении исходного сообщения:
client.on("messageDelete", async (msg) => {
const message = (await msg.guild.channels.cache.get(config.channels.report).messages.fetch()).find(message => message.embeds[0].fields[3].value === msg.id);
if (message) {
const embed = new Discord.MessageEmbed(message.embeds[0])
.spliceFields(0, 1, {name: "Message", value: `[${msg.cleanContent}](*deleted*)`, inline: false})
.spliceFields(3, 1, {name: "Message ID", value: '*deleted*', inline: false})
.setDescription("§ Report\n**The user deleted their message, but here is its content.**");
message.edit(embed);
}
});