Команда Mass DM не работает (Discord. js) - PullRequest
1 голос
/ 03 августа 2020

Это код, который я использую для массового использования 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}`));
  });
}

Я попробовал команду и спросил своих участников, получили ли они сообщение от бота, и все они сказали «нет». Я делаю что-то неправильно? Это сработало за две недели до этого.

1 Ответ

1 голос
/ 03 августа 2020

Вам нужно изменить 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}`));
  });
}
...