Промежуток между командами twitch бота

90
02 февраля 2021, 23:20

Во избежании спама в чате нужно сделать так, что бы пользователь который только что воспользовался данной командой, смог её использовать ещё раз только через 30 минут например. Сразу извиняюсь за тривиальность вопроса, искал решение, но не нашел того решения, которое может мне помочь.

client.on('chat', function (channel, username, message, self) { 
    if (message === "!команда") { 
    действие 
    } 
});

Answer 1

Я бы предложил сохранять время последнего сообщения с командой и в следующий раз проверять, может ли юзер использовать команду снова. Что-то вроде этого:

const lastCommandTime = {};
const getTimestamp = () => Math.floor(Date.now() / 1000); 
const delay = 1800; // 1800 sec = 30 min
client.on('chat', function (channel, username, message, self) {
    if (message === "!команда") {
       if(lastCommandTime[username] && (lastCommandTime[username] > getTimestamp() - delay)) {
        // нельзя использовать команду, таймаут 
       } else {
        // действие
        lastCommandTime[username] = getTimestamp();
       }
    }
});

Если будет много команд с таймаутом и/или юзеров, то желательно хранить время последнего сообщения не в памяти, а в чем-то типо Redis

READ ALSO
Ошибка в консоли ReferenceError: $ is not defined

Ошибка в консоли ReferenceError: $ is not defined

Буду очень благодарен за помощь/совет! Спасибо! :)

115
Объединение MixItUp и Owl-carousel

Объединение MixItUp и Owl-carousel

Я пытаюсь заставить owl-carousel и MixItUp работать вместе

90
Работа с массивом объектов и привязкой одних данных к другим на выходе

Работа с массивом объектов и привязкой одних данных к другим на выходе

Я новичок в JavaScript, только учусьНиже находится объект, который содержит контактную информацию

128
Поиск подстроки в начале QString

Поиск подстроки в начале QString

Как найти подстроку в начале строки, и убрать чувствительность к регистру?

127