【问题标题】:Message collector responds to other people's messages消息收集器响应其他人的消息
【发布时间】:2021-12-11 20:00:45
【问题描述】:

我正在尝试制作一个收集器来收集上述用户的消息。但即使使用过滤器,我的机器人也会响应它自己的消息和其他人的消息!这是我的test.js 文件代码:

const mentioned = message.mentions.users.first();

const filter1 = (msg) => {
  return msg.author.id === mentioned.id
}

const collector1 = await message.channel.createMessageCollector({ filter1, max: 1, time: 120000 })

collector1.on('collect', message => {
  console.log(message.content)
})

collector1.on('end', (collected) => {
  if (collected.size === 0) return message.channel.send("Mentioned user did not respond in time!")

  collected.forEach((message) => {
    if (message.content.toLowerCase() == 'accept') {
      message.channel.send(`${mentioned} accepted!`)
    }
    if (message.content.toLowerCase() == 'cancel') return message.channel.send(`${mentioned} declined!`)
  })
})

我多次更换过滤器,但仍无法解决此问题,我做错了什么? 我也使用 djs v13

【问题讨论】:

    标签: javascript node.js discord discord.js bots


    【解决方案1】:

    问题是您尝试使用Short-Hand Property Assignment 来分配filter 选项。但是,您传入“filter1”,结果为{filter1: filter1}。由于这不能解析为TextChannel#createMessageCollector()filter 选项,因此该方法忽略了未知选项,因此您的收集器没有过滤器。

    将您的 filter1 变量更改为 filter

    const filter = (msg) => {
      return msg.author.id === mentioned.id
    }
    
    const collector1 = await message.channel.createMessageCollector({ filter, max: 1, time: 120000 })
    

    【讨论】:

    • 但是,如果我的命令中有多个收集器并且我需要两个不同的过滤器怎么办
    • {filter: filterN},简写是可选的
    猜你喜欢
    • 2021-04-20
    • 2020-08-12
    • 1970-01-01
    • 2022-12-07
    • 2018-01-04
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    相关资源
    最近更新 更多