正确编辑嵌入字段的方法

时间:2020-10-21 18:39:18

标签: javascript discord discord.js

我想知道他们是否是一种编辑已发送嵌入的字段的方法。我想用参加嵌入事件的人员列表更新一个名为参与者的字段。有没有一种方法可以访问以前发送的嵌入内容以编辑此字段,还是只需要构建一个新的嵌入内容,然后在其上使用.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

有任何建议或指示吗?我更想寻找示例或有关执行此操作的逻辑的解释,而不是为我的代码提供解决方案,因为我想尝试自己编写它:)。

我感谢能提供的任何帮助!

2 个答案:

答案 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 = ?

您还应该记住异步消息