Как удалить setTimeout, спустя несколько часов?
При вводе команды бот дает ответ: Привет! Далее, спустя 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.