所以基本上,我希望机器人在用户使用特定表情符号对消息做出反应后删除其消息。当我使用下面的代码尝试此操作时,什么也没有发生。永远没有错误。我也不想要时间限制,只要有反应就去做。当前代码:
<div class="modal fade" id="verifyModal" tabindex="-1" role="dialog" aria-labelledby="verifyModalLabel" aria-hidden="false">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h6>Payment Veification</h6>
</div>
<div class="modal-body" align="center">
</div>
<div class="modal-footer">
<button style="outline: none;" type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true"><small style="color: navy; font-size: 15px;"><b>Close</b></small></span>
</button>
</div>
</div>
</div>
</div>
答案 0 :(得分:0)
您的过滤器是什么样的?我们没有看到它的第一行。您的问题是您尝试两次检查表情。一次进入过滤器,然后再次进入函数。仅在此处使用过滤器,或者如果您想要多种表情(或者我不推荐),请使用函数。
我的解决方案如下:
var message = msg.channel.send("test message");
const filter = (reaction, user) => reaction.emoji.name === ':ok_hand:' //whatever emote you want to use, beware that .await.Reactions can only check a singel emote
message.then(m=>{m.awaitReactions(filter, { max: 1})
.then(collected => {
console.log("do what ever");
m.delete();//such as this
})
.catch(console.error);
});
这对我有用。请记住,#awaitReactions不是非常通用。如果您想通过多种方式与消息进行交互,则可能需要查看#createReactionCollector,该方法的工作方式相同,但每次更改表情时都会触发。
希望我能帮上忙。