gpt4 book ai didi

node.js - 尝试编辑用户操作的特定嵌入字段

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:58 24 4
gpt4 key购买 nike

我正在尝试触发对嵌入(已发送)消息的编辑,同时保持所有其他字段相同的值

我发现这个答案作为灵感(适用于示例):Update embed fields with DiscordJS但这似乎并没有得到所有字段,只有第一个。关于这个主题没有更多的内容可供查找(或者我不擅长谷歌搜索:))。

因此,新的嵌入只是第一个字段,而不是所有(未更改的)字段。

    activityMsg = new Discord.RichEmbed({
title: 'Some text',
description: 'Description',
color: 3447003,
footer: {
icon_url: image,
text: image
},
thumbnail: {
url: image
},
fields: [
{
name: 'Text',
value: 'Text2',
},
{
name: 'Date and time',
value: '2pm',
},
{
name: 'Participants',
value: '@User',
},
{
name: 'Waiting list',
value: '@user2',
},
{
name: 'Max players',
value: '22',
}
]
});

const reactionFilterPlus = (reaction, user) => reaction.emoji.name === emoji_plus;

if(typeof title != undefined && title != null && data.length == 4 && error == ''){
var title = title[0].replace('[','').replace(']','');

// add reaction emoji to message
msg.channel.send(activityMsg)
.then(msg => msg.react(constants.emoji_plus))
.then(mReaction => {
// createReactionCollector - responds on each react, AND again at the end.
const collector = mReaction.message
.createReactionCollector(reactionFilterPlus, {
time: 15000
});

// set collector events
collector.on('collect', r => {
// immutably copy embed's Like field to new obj
let embedLikeField = Object.assign({}, activityMsg.fields[0]);

// update 'field' with new value
embedLikeField.value = `${user} <3`;

// create new embed with old title & description, new field
const newEmbed = new Discord.RichEmbed({
title: activityMsg.title,
description: activityMsg.description,
fields: [embedLikeField]
});

// edit message with new embed
// NOTE: can only edit messages you author
r.message.edit(newEmbed)
.catch(console.log);
});
})
.catch(console.log);
}

我希望这一行能够获取所有字段,但事实并非如此。

   // immutably copy embed's Like field to new obj
let embedLikeField = Object.assign({}, activityMsg.fields[0]);

我尝试过 let embedLikeField = Object.assign({}, ActivityMsg.fields[0] === 'Participants') 但随后出现以下有关字段名不存在的错误。

{ DiscordAPIError: Invalid Form Body
embed.fields[0].name: This field is required
at item.request.gen.end (/usr/src/app/node_modules/discord.js/src/client/rest/RequestHandlers/Sequential.js:79:15)
at then (/usr/src/app/node_modules/snekfetch/src/index.js:215:21)
at process._tickCallback (internal/process/next_tick.js:68:7)

英语不是我的母语,我还在学习 Nodejs。

最佳答案

Object.assign() 对源执行浅表克隆,您是否尝试克隆整个嵌入或仅克隆其第一个字段?

activityMsg.fields[0] 指的是 ActivityMsg 对象中名为 fields 的列表中的第一个元素。尝试使用activityMsg作为源调用你的assign()。

关于node.js - 尝试编辑用户操作的特定嵌入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58209529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com