为什么 awaitReactions 不起作用? | discord.jsv13

Why awaitReactions not working? | discord.js v13

我想做一个婚姻系统,但问题是即使双方都对表情符号做出反应,反应收集器也根本不起作用。一点错误都没有。执行命令后,只会显示嵌入,不会完全收集反应并发送回复内容

const filter = (reaction, user) => {
      return (reaction.emoji.name === "" || reaction.emoji.name === "") && user.id == member.id;
}

return message.awaitReactions({filter, max: 1, time: 10000, errors: ['time']})
.then(collected => {
const reaction = collected.first();
if(reaction.emoji.name === "") {
                    return message.channel.send("I think **no**...");
                }

                if(reaction.emoji.name === "") {
                    marriage.findOne({
                        guildID: message.guild.id
                    },async (err, data) => {
                        if(data) {
                            data.memberID
                            data.userID
                            await data.save()
                        } else {
                            new marriage({
                                guildID: message.guild.id,
                                userID: user.id,
                                memberID: member.id
                            }).save()

                            return message.channel.send(`${user.username} and ${member.user.username} are now married!`)
                        }
                    })
                }
            })
            .catch(() => {
                message.reply("No reaction after 10 seconds, operation canceled.")
            })

编辑:

if(exist != user.id && exist != member.id) {
            const proposal = new MessageEmbed()
            .setTitle("IMPORTANT ANNOUNCEMENT!!")
            .setDescription(`${user.username} makes a marriage proposal to ${member.user.username}.\nAre you ready to get married?`)
            .setColor('RANDOM')
            .setTimestamp()

            message.channel.send({embeds: [proposal]})
            .then((message) => {
                message.react("❤️")
                message.react("")

这是 collection

的消息部分

如果 filterawaitReactions 不在 .then((message) =>) 里面就不行,首先你需要把它放在里面

message.channel.send({embeds: [proposal]})
            .then((message) => {
                message.react("❤️")
                message.react("")

            const filter = (reaction, user) => {
                return (reaction.emoji.name == "❤️" || reaction.emoji.name == "")
                && user.id == member.id
            }
return message.awaitReactions({ filter, max: 1, time: ms('10s'), errors:["time "]})

其次,您的 embedfilter 中的表情符号不同,您也应该更改它。

message.channel.send({embeds: [proposal]})
            .then((message) => {
                message.react("❤️")
                message.react("")

            const filter = (reaction, user) => {
                return (reaction.emoji.name == "❤️" || reaction.emoji.name == "")
                && user.id == member.id
            }

            return message.awaitReactions({ filter, max: 1, time: ms('10s'), errors:["time "]})
            }).then((collected) => 
                //your codes here
            )