等待 discord.js 中的反应不起作用

时间:2021-05-23 22:00:05

标签: javascript discord.js

我目前有一个 messageReactionAdd ,然后它将 DM 嵌入,这可行,但现在我想收听该 DM 的反应,但这只是对话中的一条消息,因此不需要在其中收听。我可以在我的 messageReactionAdd 中发送一个 DM,它也会对正确的项目做出反应,但是当我对大拇指做出反应时,它不会像我一样记录 TEST,这是我的代码:

     member.send(currentEmbed).then((message) => {
      //Iterate through the dividers
      for(var j = 0; j < dividers.length; j++) {
        //Create variable to dump current number in emoiji form
        var number = "";
        //Convert digit to emoji form
        switch(dividers[j]) {
            case 1:
                number = "?";
                break;
            case 2:
                number = "2️⃣";
                break;
            case 3:
                number = "3️⃣";
                break;
            case 4:
                number = "4️⃣";
                break;
            default:
                number = "";
                break;               
        }
        //React a message with the current digit in emoji form
        message.react(number);           
      }
      //Await the thumbsup reaction **DEBUGGING
      message.awaitReactions(reaction => reaction.emoji.name === "?", {time: 150000}).then(msg => {
            console.log("TEST");
        });
    });

不要介意复杂的 for 循环,这只是为了对所有可能的组合做出反应,而且效果很好。

1 个答案:

答案 0 :(得分:0)

事件 messageReactionAdd 对缓存的消息起作用,正如文档中所说的那样https://discord.js.org/#/docs/main/stable/class/Client?scrollTo=e-messageReactionAdd

<块引用>

每当将反应添加到缓存消息时发出。

所以你可以做的是在就绪事件中启动机器人时缓存你的消息,如下所示:

client.on('ready', ()=>{
   client.channels.cache.get(CHANNEL_ID).messages.fetch(MESSAGE_ID);
});

事件 messageReactionAdd 会起作用。