我希望漫游器始终检测执行代码的反应(这里我试图通过反应创建通道)。
我尝试使用反应收集器,但是它有一个计时器,并且不能用于所有消息。
我需要一个例子,我确实尝试了很多事情,但是我发现文档中没有任何有用的东西。
答案 0 :(得分:0)
我尝试使用反应收集器,但是它有一个计时器...
我对此误解表示歉意;当我以前暗示收集者受到时间限制时,我误会了。
根据文档,省略time
选项默认为无时间限制(请参见CollectorOptions
)。因此,此示例应继续寻找用户的反应,直到机器人停止。
message.channel.send('React with .')
.then(m => {
const filter = (reaction, user) => user.id === message.author.id && reaction.emoji.name === '';
const collector = m.createReactionCollector(filter, { max: 1 });
collector.on('collect', () => {
message.clearReactions();
message.edit('You did it!');
});
})
.catch(console.error);
但是,如上所述,如果漫游器停止,则收集器将停止。解决这个问题没有简单的方法。如果您确实想要无限收集,那么我看到的唯一解决方案是将消息列表和相应的收集器存储在数据库(或json文件)中,然后将它们再次应用于客户端的ready
事件中的现有消息。