等待其他用户的反应

时间:2019-11-30 11:12:40

标签: javascript node.js discord.js

我正在建立一个验证系统,如果您要发送消息。在不同的频道中,嵌入会显示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")
    })
})

希望有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

使用此更新过滤器:

const filter = (reaction, user) => ["✅", "❌"].includes(reaction.emoji.name) && user.id !== message.client.user.id;

它将检查对消息做出反应的用户的ID是否与该ID相同,如果取消,则取消。