Exemple #1
0
        private void CheckPeriodically(ChannelWithEmptyTime channel)
        {
            var timer = new Timer(2000);

            timer.Elapsed += CheckerBuilder(timer, channel);
            timer.Start();
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        public void AddChannelToMonitor(ulong voiceChannelId)
        {
            ChannelWithEmptyTime channel = new ChannelWithEmptyTime(voiceChannelId);

            CheckPeriodically(channel);
        }