Как удалить setTimeout, спустя несколько часов?

Рейтинг: -1Ответов: 1Опубликовано: 06.04.2023

При вводе команды бот дает ответ: Привет! Далее, спустя 2ч (написано через setTimeout) высвечивается сообщение в чат: Если ты еще не освоился, перейди в канал ... Далее нужно удалить именно это сообщение, но спустя лишь несколько часов. clearTimeout поэтому не подходит, у него нет параметров времени.

Ответы

▲ 1

Непонятно почему вы говорите о clearTimeout()..

Если я правильно понял, у вас должно быть "два ожидания": сначала через 2 часа выводим сообщение, потом через 2 часа мы его же удаляем.

Следовательно нужно два таймера:

let delay = 2 * 60 * 60 * 1000; // 2 часа
// Запускаем первый таймер, по истечению которого показываем сообщение
let timer = setTimeout(() => {

  // Тут вы выводите сообщение и сохраняете в переменную ID сообщение, чтобы потом удалить его.

  // Запускаем второй таймер, где уже удалим сообщение
  timer = setTimeout(() => {
    // Удаляем сообщение.
  }, delay);
}, delay);

clearTimeout поэтому не подходит, у него нет параметров времени.

А вы читали документацию?

const timer = setTimeout(() => { // Запускаем таймер
  clearTimeout(timer); // Очищаем его.
  alert('Если ты еще не освоился, перейди в канал ...');
}, 2 * 60 * 1000)

А вообще, это не обязательно делать, т.к. он выполняет один раз, в отличии от setInterval(), что запускается через каждый delay.