给函数中的每个人DM并在完成后发送完整的消息

时间:2019-12-24 15:00:37

标签: node.js discord discord.js

我想每10分钟发送一次特定服务器中dm的服务器中的所有成员。当发送所有成员时,它将在控制台中发送完整的消息。

  • 但是它说member.send不是函数
  • 我也想在特定的服务器上
if (command === `${prefix}dmall`) {

    var list = bot.guilds.array();
    sendMessage(list);
  }
});



function sendMessage(list) {
  setTimeout(function () {
    for (i = 0; i < list.length; i++) {
      let member = list.splice(Math.floor(Math.random() * list.length), 1);
      member.send("Test")
      list.length = list.length - 1;

      if (list.length = 0)
        console.log("Done")
    }


    sendMessage(list);
  }, 10 * 1000);

}

bot.login(botconfig.token);

2 个答案:

答案 0 :(得分:0)

在您的代码中,列表不是一个公会成员列表,而是带有1个公会集合的数组。 因此,当您尝试发送消息时,您尝试将其发送到数组。 如果您有要发送dm消息的服务器ID,则可以这样做

 sudo make && sudo make install

答案 1 :(得分:0)

if (command === `${prefix}dmall`) {
   let myGuild = bot.guilds.get('YOU guild HERE')
     let list = myGuild.members.map(member => member.user.id)
    sendMessage(list, myGuild);
  }
});



function sendMessage(list, myGuild) {
  for (var i = 0; i < list.length; i++) {
    setTimeout((function(index){ 
      return function() {
                var member = myGuild.members.get(list[index])
                if(!member.user.bot && member) {
                    member.send('asdsadsa').catch(console.log('Member not allow to send him DM message'))
                }
        if(index === list.length-1) console.log('done')
      };
    })(i), 10000 * (i + 1))
  }
}

bot.login(botconfig.token);