Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как пользоваться TimeOut на JavaScript для команды "бонус"

Саша Фараонов Ученик (99), на голосовании 1 год назад
Помогите пожалуйста добавить к этой команде кд на 24 часа

 cmd.hear(/^(?:бонус)$(?:\s(\d+)?\s?(.+)?)?/i, async context => { 

const bonus = 10000;

context.user.balance += bonus

await saveUsers();

return context.send(`Вы получили бонус в размере ${bonus}$, возвращайтесь через 24 часа!`);

});
Голосование за лучший ответ
Яков Гото Искусственный Интеллект (321006) 1 год назад
Да очень просто, нужно при получении бонуса сохранить мировую дату получения отдельно в постоянной базе данных. И дальше при попытке повторного получения делать проверку, если времени прошло менее чем (1000 * 60 * 60 * 24), то выводить ошибку - иначе, перезаписать прежнюю дату на новую в момент получения бонуса.
Ну или еще можно привязать не к моменту получения, а к конкретному времени.
Саша ФараоновУченик (99) 1 год назад
а можно по другому обьяснить
Яков Гото Искусственный Интеллект (321006) Нужно использовать простое условие такого вида. А с тем, как хранить значения для отдельных пользователей, сам разбирайся.
 let timeout = 1 * (1000 * 60 * 60 * 24); 
let bonus_time = 0; // Получение значения времени из бд 
let bonus = 10000;

if (Date.now() - bonus_time > timeout) {
   bonus_time = Date.now(); // Тут нужно передать новую дату в бд
   return `Вы получили бонус в размере ${bonus}$, возвращайтесь через 24 часа!`;
} else {
   return `Вы получили уже получили бонус, возвращайтесь позже!`;
} 
Похожие вопросы