public async Task Compat(CommandContext ctx, [RemainingText, Description("Game title to look up")] string title) { title = title?.TrimEager().Truncate(40); if (string.IsNullOrEmpty(title)) { await ctx.ReactWithAsync(Config.Reactions.Failure, "You should specify what you're looking for").ConfigureAwait(false); return; } if (!await DiscordInviteFilter.CheckMessageForInvitesAsync(ctx.Client, ctx.Message).ConfigureAwait(false)) { return; } if (!await AntipiracyMonitor.IsClean(ctx.Client, ctx.Message).ConfigureAwait(false)) { return; } try { var requestBuilder = RequestBuilder.Start().SetSearch(title); await DoRequestAndRespond(ctx, requestBuilder).ConfigureAwait(false); } catch (Exception e) { Config.Log.Error(e, "Failed to get compat list info"); } }
public async Task ShowExplanation(CommandContext ctx, [RemainingText, Description("Term to explain")] string term) { string inSpecificLocation = null; if (!LimitedToSpamChannel.IsSpamChannel(ctx.Channel)) { var spamChannel = await ctx.Client.GetChannelAsync(Config.BotSpamId).ConfigureAwait(false); inSpecificLocation = $" in {spamChannel.Mention} or bot DMs"; } if (!await DiscordInviteFilter.CheckMessageForInvitesAsync(ctx.Client, ctx.Message).ConfigureAwait(false)) { return; } if (!await AntipiracyMonitor.IsClean(ctx.Client, ctx.Message).ConfigureAwait(false)) { return; } if (string.IsNullOrEmpty(term)) { await ctx.RespondAsync($"You may want to look at available terms by using `{Config.CommandPrefix}explain list`{inSpecificLocation}").ConfigureAwait(false); return; } term = term.ToLowerInvariant(); using (var db = new BotDb()) { var explanation = await db.Explanation.FirstOrDefaultAsync(e => e.Keyword == term).ConfigureAwait(false); if (explanation != null) { await ctx.RespondAsync(explanation.Text).ConfigureAwait(false); return; } } term = term.StripQuotes(); var idx = term.LastIndexOf(" to "); if (idx > 0) { var potentialUserId = term.Substring(idx + 4).Trim(); bool hasMention = false; try { var lookup = await new DiscordUserConverter().ConvertAsync(potentialUserId, ctx).ConfigureAwait(false); hasMention = lookup.HasValue; } catch { } if (hasMention) { term = term.Substring(0, idx).TrimEnd(); using (var db = new BotDb()) { var explanation = await db.Explanation.FirstOrDefaultAsync(e => e.Keyword == term).ConfigureAwait(false); if (explanation != null) { await ctx.RespondAsync(explanation.Text).ConfigureAwait(false); return; } } } } var msg = $"Unknown term `{term.Sanitize()}`. Use `{Config.CommandPrefix}explain list` to look at defined terms{inSpecificLocation}"; await ctx.RespondAsync(msg).ConfigureAwait(false); }