作者:肥zi斌_343 | 来源:互联网 | 2023-08-13 13:37
我正在建立一个验证系统,如果您要发送消息。在不同的频道中,嵌入会显示2种表情符号:1表示接受,1表示拒绝。 .awaitReaction必须由不同于作者的其他用户触发。但是当我更换过滤器时。如果机器人对此作出反应,它将触发该消息。我该如何解决?
这是我的代码:
let register = args.join(" ").slice(7)
const filter = (reaction,user) => ["✅","❌"].includes(reaction.emoji.name) && !bot.user;
let test = new Discord.RichEmbed()
.addField("User:",message.author.username && message.author.tag,true)
.addField("Requested nickname:",register)
.setColor("#ed0c75")
.setImage(message.author.displayAvatarURL)
let acceptordeny = message.guild.channels.find(`name`,"accept-or-deny");
if(!acceptordeny) return message.channel.send("Can't find accept or deny channel.");
acceptordeny.send(test).then(async message => {
await message.react("✅")
await message.react("❌")
message.awaitReactions(filter,{
max: 1,time: 60000,errors: ["time"]
}).then(collected => {
const reaction = collected.first();
switch (reaction.emoji.name) {
case "✅":
console.log("accepted")
break;
case '❌':
console.log("Denied")
break;
}
}).catch(collected => {
return acceptordeny.send("Failed")
})
})
希望有人可以帮助我。
使用此更新过滤器:
const filter = (reaction,user) => ["✅","❌"].includes(reaction.emoji.name) && user.id !== message.client.user.id;
它将检查对消息做出反应的用户的ID是否与该ID相同,如果取消,则取消。