Как изменить обратный отсчет вместо обмена сообщениями по одному?

#javascript #node.js #discord #discord.js #bots

Вопрос:

Я делаю команду обратного отсчета, вот мой код до сих пор:

 let count = args[1]

const counter = setInterval(() => {
  if (count > 0) {
    message.channel.send(count)
    count--
  } else {
    clearInterval(counter)
  }
}, 1000)
 

Прямо сейчас таймер отправляет цифры, такие как:

 1
2
3
4
5
 

Я хочу, чтобы это было только в одном сообщении, а затем редактировалось на discord.

Вот как редактировать в Discord.JS (пример) :

    message.channel.send('hi').then(m => {

     m.edit('edited!')
    })

 

Есть идеи, как это сделать?

Комментарии:

1. m.edit(count) ?

2. @Elitezen Не работает

Ответ №1:

Этого должно хватить

 let count = args[1]
let CountDownMessage;
const counter = setInterval(async () => {
  if (count == args[1]) { //For the first time only
    await message.channel.send(count).then( msg => { CountDownMessage = msg }
    count -- ;
  }else if (count > 0) {
    CountDownMessage.edit(count);
    count -- ;
  } else {
    CountDownMessage.edit("Time's up");
    clearInterval(counter);
  }
}, 1000);
 

Теперь вам не нужно каждый раз создавать функцию

Комментарии:

1. Имейте в виду, что сообщения таймера считаются спамом API, так как вызов API выполняется каждую секунду, это может привести к приостановке, если continuex

Ответ №2:

Вы можете сделать это с помощью async/await, вот как:-

     msg = await message.channel.send('1');
function intervalFunc() {
   msg.edit('2');
}
function twoFunc() {
   msg.edit('3');
}

setInterval(intervalFunc, 1000);
setInterval(twoFunc, 2000)

 

Надеюсь, это помогло!

Комментарии:

1. Есть лучшие методы обновления таймера, чем жесткое кодирование 2 функций

2. @Elitezen это зависит от автора, чтобы быть творческим, вы также можете использовать для функций и использовать переменные. Это был всего лишь пример…