簡體   English   中英

discord.js 在發送消息之前等待

[英]discord.js wait before send message

我的問題是我希望我的 discordbot 在贈品期間等待,直到贈品結束

這是我的代碼:

        const Discord = require('discord.js');
        const client = new Discord.Client();
        const config = require("./config.json");
        var prefix = config.prefix;
        client.login(config.token);

    client.on('ready',() => {
        console.log('I\'m online');
    })

    client.on('message', message => {

      const args = message.content.slice(prefix.length).trim().split(/ +/g);
      const command = args.shift().toLowerCase();


      if (command === 'gstart') {
        var channel = args[0].slice(2).slice(0, -1);
        var price = args[1];
        var End = args[2];
        var EndMS = End*1000;
        client.channels.get(channel).send({embed: {
            color: 3447003,
            author: {
              name: '',
              icon_url: ''
            },
            title: "",
            url: "",
            description: "",
            fields: [{
                name: 'a Giveaway just started !',
                value: 'Put\'🎉\' in react of this message to try to win \'' + price + '\'.'
          },     
        ],
        timestamp: '',
        footer: {
          icon_url: '',
          text: 'End in ' + End + ' secondes !'
        }
      }
    })
    .then(msg => {
      msg.react('🎉');
      client.channels.get(channel).send('STUFF')(EndMS); // my problem is here
    })
  }

他必須等待 EndMS milis,然后選擇一個獲勝者,但現在,他會立即發送 STUFF,為了選擇獲勝者,我不會問你。 我想要的只是他在發送 Stuff 之前等待。

謝謝你幫助我。

嗯,這取決於。 如果您信任機器人的正常運行時間(如果機器人在贈品期間不會崩潰或重新啟動),您可以使用 setTimeout:

setTimeout(function(){ 
    doSomething(); 
}, 3000);

這將在 3 秒(3000 毫秒)后運行doSomething() )。
所以你基本上需要做的是:

.then(msg => {
  msg.react('🎉');
  setTimeout(function(){
     client.channels.get(channel).send("It's finished!");
  }, EndMS);
})

注意:您可能需要調整 EndMS 部分。

暫無
暫無

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

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