Пример #1
0
        static void Main(string[] args)
        {
            IntPtr handle = Process.GetCurrentProcess().MainWindowHandle;

            SetConsoleMode(handle, ENABLE_EXTENDED_FLAGS);

            Console.CancelKeyPress += (sender, eArgs) => {
                _quitEvent.Set();
                eArgs.Cancel = true;
            };

            System.Timers.Timer cleartimer = new System.Timers.Timer(60000);
            cleartimer.Elapsed += (sender, stuff) => ClearRecentClipChannels();
            cleartimer.Start();
            Console.WriteLine($"MASS CHAT");


            var clientid    = "";
            var nick        = "";
            var password    = "******";
            var accessToken = "";

            var exampleHandler = new ExampleMessageHandler();

            ChannelHandler channelhandler = new ChannelHandler(clientid, accessToken, 5);
            ChatHandler    chatHandler    = new ChatHandler(nick, password, channelhandler, new IMessageHandler[] { exampleHandler });


            recentClipChannels = new List <string>();

            while (true)
            {
                try
                {
                    var messageHandlers = chatHandler.AverageTokensMessageHandlers;
                    var channels        = messageHandlers.SelectMany(c => c.Channels).ToList();

                    foreach (var channel in channels)
                    {
                        var count30 = channel.Value.CountLast(30);


                        if ((count30 > (channel.Value.AveragePerMinuteAllTime * 3)) &&
                            channel.Value.AveragePerMinuteAllTime > 2)
                        {
                            var streams = channelhandler.GetStreams().ConfigureAwait(false).GetAwaiter()
                                          .GetResult();

                            if (streams.ContainsKey(channel.Key) && !recentClipChannels.Contains(channel.Key))
                            {
                                var id = streams[channel.Key].Channel.Id;
                                Console.WriteLine($"Clip being created in {channel.Key} for {channel.Value.HandlerName}: Last 30: {count30}. Average: {channel.Value.AveragePerMinuteAllTime}");

                                var createdClips = channelhandler.CreateClip(id).ConfigureAwait(false).GetAwaiter()
                                                   .GetResult().CreatedClips;

                                recentClipChannels.Add(channel.Key);

                                foreach (var clip in createdClips)
                                {
                                    Console.WriteLine("--------------");
                                    Console.WriteLine(clip.Id);
                                    Console.WriteLine("--------------");
                                }
                            }
                        }
                    }

                    Thread.Sleep(1000);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.StackTrace);
                }
            }
        }