检测何时有人对自动生成的消息做出反应

时间:2019-09-22 03:37:12

标签: javascript discord discord.js

因此,目标是给用户一个选择,通过发送一条消息,用Y和N对该消息做出反应并检测到同一用户何时对Y做出反应来恢复已删除的消息。

我写出了所有代码,看起来不错,但是变量'question'似乎无法跟踪最初存储在其中的消息对象,因为它抛出了UnhandledPromiseRejectionWarning: TypeError: question.on is not a function。我已经测试

我知道这样的事情是可能的,因为Toasty经常依赖于此。

免责声明:我的代码中包含.then(),但我不确定自己使用的是否正确。我以前从未使用过它,但是仔细研究它似乎很合适。

其他免责声明:我在此网站上看到了another post with a similar issue,但老实说我不明白答案,而且我觉得这段代码是问题的更简洁版本。

client.on('messageDelete', function(msg){
  if (msg.author.id == 42){ //I'll plug my discord account in a different post,tyvm
    msg.channel.send ("I saw that, FOOL");
    msg.channel.send ("Would you like me to bring your message back from the grave? (Y/N)").then (function (question){
      question.react("?");
      question.react("?");
      question.on('messageReactionAdd',function (reaction, author){
        if (reaction == "?" && author.id == 42){
          msg.channel.send ("FOOL: " +msg.content);
        }
      });
    });
  }
});

1 个答案:

答案 0 :(得分:0)

因此question是消息对象,它没有messageReactionAdd侦听器,即clients侦听器,它的用法如下:

client.on('messageReactionAdd', function(msg){
    //code
})

您真正需要的是消息对象上的awaitReaction方法。

const filter = (reaction, user) => reaction.emoji.name === '?' // or whatever
question.awaitReactions(filter, { time: 15000 })
  .then(col=>{
      console.log('reacted')
  })