Сбросить интервал после указанной команды c - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть свой код, и я сделал его таким, чтобы каждые 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;
  }

})

1 Ответ

1 голос
/ 18 апреля 2020

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)
  }

})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...