消息收集器有没有办法在 Discord.js 中收集 DM?

Posted

技术标签:

【中文标题】消息收集器有没有办法在 Discord.js 中收集 DM?【英文标题】:Is there a way for message collectors to collect DMs in Discord.js? 【发布时间】:2019-11-25 19:41:42 【问题描述】:

我正在尝试收集用户对我的机器人消息的回复,但都在 DM 中。如何使用 Discord.js (12.0.0-dev) 的 master 分支完成这项任务?

我尝试使用以下代码收集消息:

const collector = new MessageCollector(
  message.author.DMChannel,
  (m) => m.author.id === message.author.id,
   max: 1, time: 120000 ,
);
const collector = message.author.dmChannel.createMessageCollector(
  max: 1,
  time: 120000,
);

这似乎是我需要的,但我只希望它返回用户发送的第一条消息。当我console.log() 结果时,总是undefined

【问题讨论】:

【参考方案1】:

在 DM 频道中,您可以使用来自 message.channelchannel.createMessageCollector() 创建收集器

client.on('message', message => 
  if (message.content == `!collect`) 
    // Create a message collector
    const filter = m => (m.content.includes('discord') && m.author.id != client.user.id);
    const channel = message.channel;
    const collector = channel.createMessageCollector(filter,  time: 10000 );
    console.log("collector started");
    collector.on('collect', m => console.log(`Collected $m.content`));
    collector.on('end', collected => console.log(`Collected $collected.size items`));
  
);

【讨论】:

【参考方案2】:

您可以轻松收集用户对您的机器人消息的回复。

使用 DM 频道, 使用

创建一个“收集器”
channel.createMessageCollector()

来自

message.channel

您的代码应该与给定的块匹配:

client.on('xyz', message => 
  if (message.content == `!collect`) 
    const filter = m => (m.content.includes('media') && m.author.id != 
    client.user.id);
    const channel_xyz = message.channel;
    const collector = channel.createMessageCollector(filter,  time: 10000 );
    console.log("collector started");
    collector.on('collected', m => console.log(`Collected $m.content`));
    collector.on('end', collected => console.log(`Collected $collected.size 
items`));
  
 );

【讨论】:

以上是关于消息收集器有没有办法在 Discord.js 中收集 DM?的主要内容,如果未能解决你的问题,请参考以下文章

多步命令和消息收集器 discord.js

有没有办法对使用 discord.js 发送的每条消息做出反应

Discord.js:如何发送消息并从中收集反应

消息收集器 discord.js

discord.js - 消息收集器不会结束

有没有办法在将消息从节点服务器发布到频道时获取 Discord 消息 ID?