#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 это зависит от автора, чтобы быть творческим, вы также можете использовать для функций и использовать переменные. Это был всего лишь пример…