मेरे पास मेरा कोड है और मैंने इसे हर 5 सेकंड में एक संदेश भेजा है (Interval) और अब मैं चाहता हूं कि यह अंतराल पर टाइमर को @bclear या @bfound टाइप करने के बाद रीसेट कर दे। (@) एक उपसर्ग है। यहाँ मेरा कोड है

client.on('message', message => {
  if (message.content.startsWith(`${prefix}start`)) {
    message.delete()
    setInterval(function() {
      lastbuffer++;
      client.channels.cache.get("700489735352746045").send('<@&700343773342990337>').then(msg => {
        msg.delete();
      })
      client.channels.cache.get("700489735352746045").send(Buffer).then(msg => {
        msg.delete({
          timeout: 4000
        })
      });
    }, 5000)
  }


  if (message.content.startsWith(`${prefix}bclear`)) {
    message.delete()

    setInterval(5000);

    client.channels.cache.get("700489735352746045").send(BufferClear);
    lastbuffer = 0;
  }
  if (message.content.startsWith(`${prefix}bfound`)) {

    message.delete()

    const BufferNClear = new Discord.MessageEmbed()
      .setColor('#FF0000')
      .setTitle('Buffers are NOT clear!')
      .setDescription('Enemies are building a cannon on us!')
      .addField("Triggered By: ", message.author.toString(), true)
      .addField("Time triggered: ", datetime, true)
      .setTimestamp()
      .setFooter('we got splitL')

    client.channels.cache.get("700489735352746045").send("<@&700343773342990337> Stay alert! Enemies on our walls!")
    client.channels.cache.get("700489735352746045").send("<@&700343773342990337> Stay alert! Enemies on our walls!")
    client.channels.cache.get("700489735352746045").send("<@&700343773342990337> Stay alert! Enemies on our walls!")
    message.delete();
    client.channels.cache.get("700489735352746045").send(BufferNClear)
    lastbuffer = 0;
  }

})
0
wex 18 अप्रैल 2020, 18:41

1 उत्तर

सबसे बढ़िया उत्तर

setInterval() एक अंतराल आईडी देता है जिसे आपको एक चर में संग्रहीत करना चाहिए। बाद में, जब आप अंतराल को रोकना चाहते हैं तो आपको कॉल करना होगा clearInterval(intervalID)MDN वेब डॉक्स में अधिक विवरण

//just make sure it has access to the params it needs to work
function sendMessage() {
  lastbuffer++;
  client.channels.cache.get("700489735352746045").send('<@&700343773342990337>').then(msg => {
    msg.delete();
  })
  client.channels.cache.get("700489735352746045").send(Buffer).then(msg => {
    msg.delete({
      timeout: 4000
    })
  });
}

let intervalID;
const intervalSeconds = 5000;

client.on('message', message => {
  if (message.content.startsWith(`${prefix}start`)) {
    message.delete()
    intervalID = setInterval(sendMessage, intervalSeconds)
  }

  if (message.content.startsWith(`${prefix}bclear`)) {
    message.delete()

    clearInterval(intervalID);

    client.channels.cache.get("700489735352746045").send(BufferClear);
    lastbuffer = 0;

    intervalID = setInterval(sendMessage, intervalSeconds)
  }
  if (message.content.startsWith(`${prefix}bfound`)) {

    message.delete()

    clearInterval(intervalID);

    const BufferNClear = new Discord.MessageEmbed()
      .setColor('#FF0000')
      .setTitle('Buffers are NOT clear!')
      .setDescription('Enemies are building a cannon on us!')
      .addField("Triggered By: ", message.author.toString(), true)
      .addField("Time triggered: ", datetime, true)
      .setTimestamp()
      .setFooter('we got splitL')

    client.channels.cache.get("700489735352746045").send("<@&700343773342990337> Stay alert! Enemies on our walls!")
    client.channels.cache.get("700489735352746045").send("<@&700343773342990337> Stay alert! Enemies on our walls!")
    client.channels.cache.get("700489735352746045").send("<@&700343773342990337> Stay alert! Enemies on our walls!")
    message.delete();
    client.channels.cache.get("700489735352746045").send(BufferNClear)
    lastbuffer = 0;

    intervalID = setInterval(sendMessage, intervalSeconds)
  }

})
1
d3bgger 18 अप्रैल 2020, 16:52