猿问

如何向 API v12 上的服务器上的所有用户发送 Discord 直接消息?

我正在尝试将我的 discord 机器人从 API v11 更新到 API v12,但我在向所有服务器用户发送直接消息时遇到了问题。它没有返回任何错误,我使用的是 Discord API 的最新版本


这是功能:


const members = message.guild.members.cache.map((member) => member);

for (let i = 0; i < message.guild.memberCount; i++) {

 console.log(typeof members[i].id);

 if (blacklist.includes(members[i].id) === true) {

  console.log('1 usuário da BlackList não recebeu a mensagem.');

 } else {

  client.users.cache

   .get(members[i].id)

   .send('oi pepe')

   .catch(console.error);

 }

}

有人可以帮我吗?


心有法竹
浏览 274回答 1
1回答

猛跑小猪

首先,根据服务器的大小,DMing 公会的所有成员违反了 Discord 的服务条款,并且通常会使您的机器人被禁止。其次,message.guild.members.cache只会返回公会的缓存成员,这很少是每个成员。相反,使用message.guild.fetch(),它将通过 Discord 的 API 强制获取公会的每个成员第三,你的很多代码都非常复杂,例如,你使用 map(member => member). 以下是我将如何重写您的函数:// get all members in the guildmessage.guild.members.fetch().then((members) => {&nbsp; // iterate a function through every member of the guild&nbsp; // with `Array.prototype.forEach()`&nbsp; members.forEach((member) => {&nbsp; &nbsp; &nbsp;if (blacklist.includes(member.id) || member.user.bot)&nbsp; &nbsp; &nbsp; return console.log("1 usuário da BlackList não recebeu a mensagem.");&nbsp; &nbsp; &nbsp;member.send("oi pepe").catch(console.error);&nbsp; });});
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答