Mass DM命令不起作用(discord.js)

时间:2020-08-03 11:26:18

标签: node.js discord discord.js

这是我用来批量处理dm的代码,如下:

  if (message.content === 'tdm'){

  message.guild.members.cache.forEach(member => { // Looping through each member of the guild.
    // Trying to send a message to the member.
    // This method might fail because of the member's privacy settings, so we're using .catch
    member.send("test").catch(e => console.error(`Couldn't DM member ${member.user.tag}`));
  });
}

我尝试了该命令,并询问我的成员是否收到了机器人发出的消息,但所有人都拒绝了。难道我做错了什么?它在2周前生效。

1 个答案:

答案 0 :(得分:1)

您需要将message.guild.members.cache.forEach()更改为(await message.guild.members.fetch()).each()

.fetch()而非.cache用于确保获取所有成员,而不仅仅是获取缓存中的成员。

使用

.each()代替.forEach,因为message.guild.members.fetch()返回Discord集合(Discord.Collection()),而不是数组。

if (message.content === 'tdm'){
  (await message.guild.members.fetch()).each(member => { // Looping through each member of the guild.
    // Trying to send a message to the member.
    // This method might fail because of the member's privacy settings, so we're using .catch
    member.send("test").catch(e => console.error(`Couldn't DM member ${member.user.tag}`));
  });
}