簡體   English   中英

RichEmbed 更新硬編碼反應 (Discord.js)

[英]RichEmbed updates with the hard coded reaction (Discord.js)

我按照其他一些問題為豐富的嵌入制作了一個反應收集器(我確實先嘗試了 awaitReaction 方法,但我無法應用它)。 現在我遇到了一個問題,即一旦機器人添加了反應,編輯就會發生,而我希望等待用戶輸入。 我在下面添加了我的原始代碼。

                        let botembed = new Discord.RichEmbed()
                            .setTitle(data.englishTitle)
                            .setAuthor(data.title + ", " + data.synonyms)
                            .setColor(rcolor)
                            .setFooter(data.url, data.thumbnail)
                            .setThumbnail(data.picture)
                            .addField("Score", data.score)
                            .addField("Episodes", data.episodes)
                            .addField("Description", "React");
                        return message.channel.send(botembed).then(msg => msg.react('🗒️'))
                            .then(mReaction => {
                                const reactionFilter = (reaction, user) => reaction.emoji.name === '🗒️';
                                const collector = mReaction.message
                                    .createReactionCollector(reactionFilter, {
                                        time: 15000
                                    });
                                collector.on('collect', r => {
                                    const newEmbed = new Discord.RichEmbed()
                                        .setTitle(data.englishTitle)
                                        .setAuthor(data.title + ", " + data.synonyms)
                                        .setColor(rcolor)
                                        .setFooter(data.url, data.thumbnail)
                                        .setImage(data.picture)
                                        .addField("Score", data.score)
                                        .addField("Episodes", data.episodes)
                                        .addField("Description", data.synopsis);

                                    r.message.edit(newEmbed)
                                        .catch(console.log);
                                });
                            })
                            .catch(console.log);

實現此目的的正確方法是什么,或者是否有更好的方法?

您可以在此代碼中更改兩個主要內容。 首先,使用異步/等待承諾工作流而不是面向回調。 它更容易理解並且更具可讀性。 其次,將您的問題分解為更小的功能,它很難快速理解,因此您可以在其他功能之間拆分一些任務。

也有點難以理解您在這里遇到了什么問題,但是,如果您的問題是機器人正在收集自己的反應,您可以將反應過濾器更改為:

const reactionFilter = (reaction, user) => reaction.emoji.name === '🗒️' && !user.bot;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM