为什么 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
的消息部分
如果 filter
和 awaitReactions
不在 .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 "]})
其次,您的 embed
和 filter
中的表情符号不同,您也应该更改它。
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
)
我想做一个婚姻系统,但问题是即使双方都对表情符号做出反应,反应收集器也根本不起作用。一点错误都没有。执行命令后,只会显示嵌入,不会完全收集反应并发送回复内容
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
的消息部分如果 filter
和 awaitReactions
不在 .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 "]})
其次,您的 embed
和 filter
中的表情符号不同,您也应该更改它。
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
)