javascript - 检测某人何时对机器人创建的消息做出反应
问题描述
因此,目标是让用户选择通过发送消息来恢复已删除的消息,用 Y 和 N 对该消息做出反应,并检测同一用户何时对 Y 做出反应。
我写出了所有代码,看起来还不错,但似乎变量“问题”失去了对最初存储在其中的消息对象的跟踪,因为它抛出了UnhandledPromiseRejectionWarning: TypeError: question.on is not a function
. 我测试过
我知道这样的事情是可能的,因为Toasty经常依赖它。
免责声明:我.then()
的代码中有,但我不完全确定我是否正确使用它。我以前从未使用过它,但仔细研究了一下,它似乎适合这项工作。
其他免责声明:我在这个网站上看到了另一个类似问题的帖子,但老实说我不明白答案,我觉得这段代码是问题的更简洁版本。
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);
}
});
});
}
});
解决方案
所以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')
})
推荐阅读
- vb.net - VB .NET - App.config - 连接字符串
- node.js - 使用 mongodb 从查找中计算总成本
- c# - 将 count 的结果存储在 SQL 中的变量中
- sql - 如何将 3 个查询的结果合并到一张表中
- html - 在 Spotify 嵌入链接旁边添加文本
- python - 使用套接字python连接不同网络上的两台计算机
- angular - 在生产模式下找不到 sqlite 文件 Electron + Angular
- python - 如何让一个功能等待另一个功能完成后再继续
- typescript - 未处理的承诺拒绝:TypeError:null 不是对象(评估 camera.pictureSize)
- hidden-markov-models - 当协方差矩阵值在 hmmlearn - GMMHMM 中都相同时,这意味着什么?