private async Task UpdatePollAsync()
        {
            _pollState.StepForward();

            if (_pollState.Cooldown)
            {
                return;
            }

            if (_pollState.ShouldRegenerate)
            {
                _canQueryPoll = false;
                _poll.GenerateNew();
                _canQueryPoll = true;
            }

            var progressPercentage = _pollState.GetProgressPercentage();

            if (progressPercentage < 100.0)
            {
                await SendCurrentStatusAsync(progressPercentage, _poll.GetPollOptions(), _pollState.IsRapidfire);
            }
            else
            {
                await SendClearStatusAsync();

                if (!_pollState.IsRapidfire)
                {
                    var payload = _poll.GetPayloadWithMostVotes();
                    _cmdQueue.AddPayload(payload);
                }

                _pollState.Cooldown = true;
            }
        }
Beispiel #2
0
        static async Task Main(string[] args)
        {
            StreamnesiaConfig config;

            if (File.Exists("streamnesia-config.json"))
            {
                config = JsonConvert.DeserializeObject <StreamnesiaConfig>(File.ReadAllText("streamnesia-config.json"));
            }
            else
            {
                config = new StreamnesiaConfig();
                File.WriteAllText("streamnesia-config.json", JsonConvert.SerializeObject(config));
            }

            IPayloadLoader payloadLoader = new LocalPayloadLoader(config);
            var            payloads      = await payloadLoader.GetPayloadsAsync();

            _ = CommandQueue.StartCommandProcessingAsync(CancellationToken.None);

            if (args.Length == 2 && args[0] == "--chaos" && uint.TryParse(args[1], out var wait))
            {
                await RunChaosModAsync(payloads, wait);
            }
            else if (args.Any() && args[0] == "--bot")
            {
                var bot = new Bot();
                bot.OnCommandSelected = index => {
                    if (index > 22 || index < 0)
                    {
                        return;
                    }

                    var p = payloads.ElementAt(index);
                    CommandQueue.AddPayload(p);
                };
                bot.OnMessageSent = async msg => {
                    await Amnesia.DisplayTextAsync(msg);
                };
                bot.OnDeathSet = msg => {
                    Amnesia.SetDeathHintTextAsync(msg);
                };
            }
            else if (args.Length == 2 && args[0] == "--run")
            {
                CommandQueue.AddPayload(payloads.First(p => p.Name.Contains(args[1])));
            }

            for (var i = 0; i < payloads.Count(); i++)
            {
                var p = payloads.ElementAt(i);
                Console.WriteLine($"{i} - {p.Name}");
            }

            await Task.Delay(-1);
        }