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; } }
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); }