private void CheckPeriodically(ChannelWithEmptyTime channel) { var timer = new Timer(2000); timer.Elapsed += CheckerBuilder(timer, channel); timer.Start(); }
private ElapsedEventHandler CheckerBuilder(Timer timer, ChannelWithEmptyTime channel) { var res = new ElapsedEventHandler((sender, args) => { var vc = client.GetChannel(channel.VoiceChannelId) as SocketVoiceChannel; if (vc == null) { timer.Dispose(); return; } if (vc.Users.Any()) { channel.EmptyTimeSpan = null; return; } else { channel.EmptyTimeSpan = channel.EmptyTimeSpan ?? TimeSpan.Zero; channel.EmptyTimeSpan += TimeSpan.FromMilliseconds(timer.Interval); } if (channel.EmptyTimeSpan > TimeSpan.FromMinutes(1)) { vc.DeleteAsync().GetAwaiter().GetResult(); timer.Dispose(); } }); return(res); }
public void AddChannelToMonitor(ulong voiceChannelId) { ChannelWithEmptyTime channel = new ChannelWithEmptyTime(voiceChannelId); CheckPeriodically(channel); }