我目前有一个 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 循环,这只是为了对所有可能的组合做出反应,而且效果很好。
答案 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 会起作用。