我想知道他们是否是一种编辑已发送嵌入的字段的方法。我想用参加嵌入事件的人员列表更新一个名为参与者的字段。有没有一种方法可以访问以前发送的嵌入内容以编辑此字段,还是只需要构建一个新的嵌入内容,然后在其上使用.edit方法即可。我还注意到,我可以使用像这样的行const receivedEmbed = message.embeds[0];
来访问位于其所在索引处的embed,但是文档说这可能会与缓存(doc reference)混淆。
这是我的代码段供参考
var reactions = ['?','?','?' ]; // Valid reactions for filter
var participants = []; // People attending the event
// Sending the embed back and then . . .
message.channel.send(eventEmbed)
.then(embedMessage => {
// Adding the reactions after the embed has been created
embedMessage.react("?");
embedMessage.react("?");
embedMessage.react("?");
console.log(eventEmbed);
// Reaction Collector to gather the users attending the event.
const filter = (reaction, user) => {
return !user.bot && reactions.includes(reaction.emoji.name);
};
// The reactor is used to identify a new user that will be attending the event,
// and adding them to the list
rc = new Discord.ReactionCollector(embedMessage, filter);
rc.on('collect', (reaction, user) => {
console.log(user + " reacted with a " + reaction);
attendees.push(user); // Add new user the the attendees list
console.log(attendees); // Debugging
reaction.users.remove(user); // Reset reaction count back to 1
// Then here I want to edit the participants field with the new participants list
有任何建议或指示吗?我更想寻找示例或有关执行此操作的逻辑的解释,而不是为我的代码提供解决方案,因为我想尝试自己编写它:)。
我感谢能提供的任何帮助!
答案 0 :(得分:0)
很难获取嵌入内容,然后对其进行编辑。但是,有一种方法可以从预先存在的对象中对其进行编辑。
您可以保留嵌入的对象,当您要更新某些内容时,请转到该对象的fields属性,获取所需的字段,编辑该字段,然后用新的替换原来的消息。
放置// Then here I want to edit the participants field with the new participants list
的地方。
你应该放
eventEmbed.fields.find(f => f.name === "attendees").value = attendees;
embedMessage.edit(eventEmbed);
答案 1 :(得分:0)
这很容易做到!您可以执行以下操作:
UPDATE usersTable SET plannerTable = ? WHERE id = ?
您还应该记住异步消息