public async Task InternalTrivia(params string[] args) { var channel = (ITextChannel)ctx.Channel; var(opts, _) = OptionsParser.ParseFrom(new TriviaOptions(), args); var config = _gamesConfig.Data; if (config.Trivia.MinimumWinReq > 0 && config.Trivia.MinimumWinReq > opts.WinRequirement) { return; } var trivia = new TriviaGame(Strings, _client, config, _cache, _cs, channel.Guild, channel, opts, Prefix + "tq"); if (_service.RunningTrivias.TryAdd(channel.Guild.Id, trivia)) { try { await trivia.StartGame().ConfigureAwait(false); } finally { _service.RunningTrivias.TryRemove(channel.Guild.Id, out trivia); await trivia.EnsureStopped().ConfigureAwait(false); } return; } await ctx.Channel.SendErrorAsync(GetText("trivia_already_running") + "\n" + trivia.CurrentQuestion) .ConfigureAwait(false); }
public async Task Trivia(int winReq = 10, [Remainder] string additionalArgs = "") { var channel = (ITextChannel)Context.Channel; var showHints = !additionalArgs.Contains("nohint"); TriviaGame trivia = new TriviaGame(channel.Guild, channel, showHints, winReq); if (RunningTrivias.TryAdd(channel.Guild.Id, trivia)) { try { await trivia.StartGame().ConfigureAwait(false); } finally { RunningTrivias.TryRemove(channel.Guild.Id, out trivia); await trivia.EnsureStopped().ConfigureAwait(false); } return; } else { await Context.Channel.SendErrorAsync("Trivia game is already running on this server.\n" + trivia.CurrentQuestion).ConfigureAwait(false); } }
public async Task InternalTrivia(int winReq, string additionalArgs = "") { var channel = (ITextChannel)Context.Channel; additionalArgs = additionalArgs?.Trim()?.ToLowerInvariant(); var showHints = !additionalArgs.Contains("nohint"); var isPokemon = additionalArgs.Contains("pokemon"); var trivia = new TriviaGame(channel.Guild, channel, showHints, winReq, isPokemon); if (RunningTrivias.TryAdd(channel.Guild.Id, trivia)) { try { await trivia.StartGame().ConfigureAwait(false); } finally { RunningTrivias.TryRemove(channel.Guild.Id, out trivia); await trivia.EnsureStopped().ConfigureAwait(false); } return; } await Context.Channel.SendErrorAsync(GetText("trivia_already_running") + "\n" + trivia.CurrentQuestion) .ConfigureAwait(false); }
public async Task InternalTrivia(params string[] args) { var channel = (ITextChannel)Context.Channel; var(opts, _) = OptionsParser.Default.ParseFrom(new TriviaOptions(), args); var trivia = new TriviaGame(_strings, _client, _bc, _cache, _cs, channel.Guild, channel, opts); if (_service.RunningTrivias.TryAdd(channel.Guild.Id, trivia)) { try { await trivia.StartGame().ConfigureAwait(false); } finally { _service.RunningTrivias.TryRemove(channel.Guild.Id, out trivia); await trivia.EnsureStopped().ConfigureAwait(false); } return; } await Context.Channel.SendErrorAsync(GetText("trivia_already_running") + "\n" + trivia.CurrentQuestion) .ConfigureAwait(false); }