这是我用来批量处理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周前生效。
答案 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}`));
});
}