Discordjs DM所有服务器成员



我试图通过一个bot通过命令DM所有服务器成员,它只DM 4人是管理员

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(`hi`)
.catch(() => (`Couldn't DM member ${member.user.tag}`));
message.channel.send(`Success`)
.catch(console.error);
});

这个操作非常耗时。@SuleymanCelik的答案部分正确,因为不是每个用户都存储在bot成员缓存中。要获取服务器中的每个用户,您需要像这样为所有用户调用fetch()。

guild.members
.fetch()
.then(members => members.forEach(member => {
member
.send("Hello!")
.catch(() => {
console.error(`Failed to send ${member.user.tag} a message`)
})
}))

您可以通过这种方式向所有隐私设置未打开的用户发送消息

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("Hello, this is my message!").catch(e => console.error(`Couldn't DM member ${member.user.tag}`));
});

最新更新