Así que estoy tratando de editar un campo en una inserción. La inserción obtenida se ve así:
MessageEmbed { type: 'rich', title: null, description: null, url: null, color: 5763719, timestamp: null, fields: [ { name: 'Suggestie', value: 'test1', inline: false }, { name: 'Status', value: 'Open', inline: true }, { name: 'ID', value: 'SPogb', inline: true }, { name: 'User ID', value: '291272018773671937', inline: true }, { name: 'Opmerking van staff:', value: 'Geen opmerking', inline: false } ], thumbnail: null, image: null, video: null, author: { name: 'Nigel#7777', url: undefined, iconURL: 'https://cdn.discordapp.com/avatars/291272018773671937/b2637472f4502b2b2280b6302d3f666c.webp', proxyIconURL: 'https://images-ext-1.discordapp.net/external/I_MfeMd6YbK_NxsY_kG-k7P6hiytpXx3tNk9ZJdd9lg/https/cdn.discordapp.com/avatars/291272018773671937/b2637472f4502b2b2280b6302d3f666c.webp' }, provider: null, footer: null }Estoy tratando de editar el valor del campo Estado de Abierto a Aprobado, pero no tengo idea de cómo lograrlo. actualmente tengo:
const kanaal = interaction.guild.channels.cache.get(config.kanalen.suggestieKanaal) const ID = interaction.options.getString('id'); let correcteSuggest; kanaal.messages.fetch({limit: 50}).then(messages => { const botMessages = messages.filter(msg => msg.author.bot); botMessages.forEach(msg => { if(msg.embeds[0].fields[2].value === interaction.options.getString('id')) { correcteSuggest = msg; } }) console.log(correcteSuggest.embeds[0].fields) // correcteSuggest.edit(embeds[0].fields[1] = ({name: "Status", value: "Approved", inline: true})) // const editedEmbed = new Discord.MessageEmbed(correcteSuggest.embeds[0]).fields[3] })Las cosas comentadas que probé pero no parecían funcionar. He visto a otras personas obtener la inserción y les gusta .setDescription, pero no sé cómo funcionaría eso con .setField ya que hay más de un campo.
Se solucionó esto haciendo:
correcteSuggest.embeds[0].fields.find(f => f.name === "Status").value = "Approved"; correcteSuggest.edit({embeds: [correcteSuggest.embeds[0]]})su lógica de editar la inserción es correcta pero la forma es incorrecta. Discord.JS en realidad no solo actualiza un campo, actualiza todo el mensaje, por lo que tendremos que cambiar el camino a un MessageEmbed completamente nuevo.
const kanaal = interaction.guild.channels.cache.get(config.kanalen.suggestieKanaal) const ID = interaction.options.getString('id'); let correcteSuggest; kanaal.messages.fetch({ limit: 50 }).then(messages => { const botMessages = messages.filter(msg => msg.author.bot); botMessages.forEach(msg => { if (msg.embeds[0].fields[2].value === interaction.options.getString('id')) { correcteSuggest = msg; } }) if (correcteSuggest.embeds[0]) { const editedEmbed = new Discord.MessageEmbed(correcteSuggest.embeds[0]); editedEmbed.fields[1].value = "Approved"; correcteSuggest.edit({ embeds: [editedEmbed] }); } })