Как данный пример написать более, оптимизирование и лучше

В чем суть, я хочу сделать команду которая, будет заглушать пользователя на определенное время как это работает бот выдает роль которая запрещает пользователю писать в чат, и через определенное время снимается автоматически, в моем случае 10 сек. Как бы команда работает, но мне хотелось бы написать данное решение более оптимизированным и так скажем на другом более высоком уровне, я пробовал через таймер (System.Timers) и у меня не получилось снять роль с пользователя которому я выдал мут (вариант ниже который не получился)

   //Рабочий пример
   [Command("Mute")]
    public async Task Mute(SocketGuildUser user)
    {    
        var roleId = Context.Guild.GetRole(771292105783771136);
       
         //Выдача роли мута
        await user.AddRoleAsync(roleId) ;

         Thread.Sleep(10000);
          
        //Снятие роли мута
        await user.RemoveRoleAsync(roleId);
    }

       //Не рабочий пример
        [Command("Mute")]
        public async Task Mute(SocketGuildUser user)
        {
            var _timer = new Timer();
            var roleId = Context.Guild.GetRole(771292105783771136);
           
            await user.AddRoleAsync(roleId);

            _timer = new Timer(10000);

            await user.AddRoleAsync(roleId);

            _timer.AutoReset = true;
            _timer.Enabled = true;

            _timer.Elapsed += _timer_Elapsed;

                
        }

        private void _timer_Elapsed(object sender, ElapsedEventArgs e)
        {

          //По моему пониманию как работает таймер в этом методе я должен снять с пользователя роль и остановить таймер
          _timer.Stop(); 
        }

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