You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.js v13消息采集器过滤失效 误响应自身及他人消息如何解决?

核心错误原因

你在创建消息采集器时传递的配置对象键名填写错误。discord.js v13 中 channel.createMessageCollector 方法接收的配置项里,过滤器对应的键是固定为filter,你将自定义的过滤函数命名为filter1后直接将其作为键名传入配置,相当于没有配置生效的过滤规则,采集器会收集所有符合时间、数量限制的消息,自然会包含机器人自身和其他用户发送的内容。

修正方案

仅需要修改创建采集器的传参逻辑即可,两种写法可选:

  1. 保留你现有的filter1函数,修改传参键名:
// 仅修改这一行即可,将filter1改为 filter: filter1
const collector1 = await message.channel.createMessageCollector({ filter: filter1, max: 1, time: 120000 })
  1. 直接把过滤规则写在配置项中,更简洁:
const collector1 = await message.channel.createMessageCollector({
  filter: msg => msg.author.id === mentioned.id,
  max: 1,
  time: 120000
})

额外优化建议

可以在过滤规则中新增机器人账号排除逻辑,彻底避免机器人自身发送的消息被误采集:

const filter1 = (msg) => {
  // 先排除所有机器人发送的消息,再匹配被@用户的ID
  return !msg.author.bot && msg.author.id === mentioned.id
}

内容的提问来源于stack exchange,提问作者MegaMix_Craft

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:06:08