Как данный пример написать более, оптимизирование и лучше
В чем суть, я хочу сделать команду которая, будет заглушать пользователя на определенное время как это работает бот выдает роль которая запрещает пользователю писать в чат, и через определенное время снимается автоматически, в моем случае 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();
}