为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

心有法竹 2023-03-24 16:48:25
我正在尝试将我的 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); }}有人可以帮我吗?
查看完整描述

1 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

首先,根据服务器的大小,DMing 公会的所有成员违反了 Discord 的服务条款,并且通常会使您的机器人被禁止。


其次,message.guild.members.cache只会返回公会的缓存成员,这很少是每个成员。相反,使用message.guild.fetch(),它将通过 Discord 的 API 强制获取公会的每个成员


第三,你的很多代码都非常复杂,例如,你使用 map(member => member). 以下是我将如何重写您的函数:


// get all members in the guild

message.guild.members.fetch().then((members) => {

  // iterate a function through every member of the guild

  // with `Array.prototype.forEach()`

  members.forEach((member) => {

     if (blacklist.includes(member.id) || member.user.bot)

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

     member.send("oi pepe").catch(console.error);

  });

});


查看完整回答
反对 回复 2023-03-24
  • 1 回答
  • 0 关注
  • 273 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号