Discord.js中reaction collector不符合过滤规则仍触发如何解决?
问题根因
你代码里的createReactionCollector配置参数写错了,导致过滤器完全没生效。
Discord.js 的createReactionCollector方法的配置项中,指定过滤逻辑的字段名是固定的filter。你自定义的过滤函数变量名是filter2,直接按{filter2, time: 50000}传参后,配置对象里只有一个无效的filter2属性,没有识别到可用的过滤规则,所以所有在时间范围内的反应都会触发收集器。
修复方案
把配置项里的过滤函数对应到filter字段即可:
const filter2 = (reaction, user) => { return reaction.emoji.name === '👎' && user.id === message.author.id; }; // 修正配置项的字段名 const collector = confirmedMessage.createReactionCollector({filter: filter2, time: 50000}); collector.on('collect', (reaction, user) => { console.log("PLEASE"); });
如果想简化代码,也可以直接把过滤函数的变量名改成filter,直接传{filter, time: 50000}就能正常生效。
内容的提问来源于stack exchange,提问作者tan shi yu
相关产品推荐
相关产品推荐

