使bot如何向每个服务器成员发送消息

时间:2020-10-14 11:34:24

标签: discord discord.js

Discord,js 12.3.1

我如何使漫游器向所有服务器的每个成员发送消息?

我想让机器人成为on_ready

1 个答案:

答案 0 :(得分:0)

根据您的漫游器所在的服务器数量以及该服务器中的用户数量,您的漫游器很可能会被禁止。我丝毫不推荐这样做。

您可以使用GuildMemberManager.fetch(),它将与几个for... of循环一起获取服务器中的所有成员。

// const client = new Discord.Client();

client.on('ready', async () => {
 for (const guild of client.guilds.cache)
  for (const user of await guild.members.fetch())
   user.send('message').catch(() => console.log('User had DMs disabled'));
});

此方法的一个问题是,如果某些用户位于这些服务器中的多个服务器中,则可能会多次DMd(除了明显的问题是,这会占用大量内存,并且您的漫游器可能会被禁止)

您还可以在初始化客户端时启用fetchAllMembers选项。

在启动时以及在加入公会时是否缓存所有公会成员和用户(应尽可能避免)

再次,如描述所言,应尽可能避免这种情况(我只是为了说明清楚)。

// const client = new Discord.Client({ fetchAllMembers: true });

client.on('ready', () => {
 for (const user of client.users.cache)
  user.send('message').catch(() => console.log('User had DMs disabled'));
});

我不能足够强调这个想法有多糟糕。