Анти-спам команд для дискорд бота

Я хочу сделать чтобы каждый пользователь мог использовать 1 команду раз в 10 секунд. Сначала, я хотел через таймер но у меня не получилось, через DateTime как видно сразу берется 2 дейтайма из двух методов и получается что прошла 1 секунда, то есть команда обработается, а мне нужно чтобы команда не обрабатывалась, а вылазил текст со временем сколько пользователю осталось времени КД команды, через базу данных это легко сделать, но я не хочу мне бы хотелось без неё как-то. библиотека discord.net

 public static bool CoolDown(ulong channelid, DateTime last_time)
        {
                var time = DateTime.Now; 

                if ((time - last_time).Seconds > 10)
                {
                        return false;
                }
                else
                {
                        return true;
                }                  
        }



private async Task OnMessageReceivedAsync(SocketMessage s)
        {
            var msg = s as SocketUserMessage;     
            if (msg == null) return;
            if (msg.Author.Id == _discord.CurrentUser.Id) return;      

            var context = new SocketCommandContext(_discord, msg);    
          
      
           
            int argPos = 0;     

            if (msg.HasStringPrefix(_config["prefix"], ref argPos) || msg.HasMentionPrefix(_discord.CurrentUser, ref argPos))
            {
                var result = await _commands.ExecuteAsync(context, argPos, _provider);
                var time = DateTime.Now;   

                if (result.IsSuccess && !CoolDownCommands.CoolDown(context.Channel.Id, time))
                {
                 
                    await msg.Channel.SendMessageAsync("Вы можете использовать 1 команду раз в 10 сек.");
          
                }
                else
                {

                    if (!result.IsSuccess)     
                        await context.Channel.SendMessageAsync(result.ToString());
                }
            }   
        }

Ответы (0 шт):