簡體   English   中英

在函數中發送給每個人,並在完成后發送完整的消息

[英]Dm everyone in a function and sends a complete message when it's done

我想在特定服務器中每 10 分鍾發送一次服務器中的所有成員。 當它發送所有成員時,它會在控制台中發送一條完整的消息。

  • 但它說 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);

在您的代碼列表中,它不是公會成員列表,而是具有 1 個公會集合的數組。 因此,當您嘗試發送消息時,請嘗試將其發送到數組。 如果您有要發送 dm 消息的服務器 ID,則可以這樣做

if (command === `${prefix}dmall`) {

    let dmGuild = bot.guilds.get('GUILD ID HERE')
    dmGuild.members.map(member => {
        member.send('YOUR MESSAGE')
        .catch('Member not allowed to recive DM message from this server')
    })    
});
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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM