add more options to /quote
This commit is contained in:
parent
7110ebaac3
commit
a54b42ee67
3 changed files with 18 additions and 6 deletions
|
@ -9,4 +9,5 @@ public class ChatlogQuery
|
||||||
public int? Count { get; set; }
|
public int? Count { get; set; }
|
||||||
public bool Random { get; set; }
|
public bool Random { get; set; }
|
||||||
public string? Regex { get; set; }
|
public string? Regex { get; set; }
|
||||||
|
public string[]? CustomWhere { get; set; }
|
||||||
}
|
}
|
|
@ -103,6 +103,8 @@ public class Database
|
||||||
where.Add("message REGEXP @regex");
|
where.Add("message REGEXP @regex");
|
||||||
cmd.Parameters.AddWithValue("@regex", q.Regex);
|
cmd.Parameters.AddWithValue("@regex", q.Regex);
|
||||||
}
|
}
|
||||||
|
if (q.CustomWhere != null)
|
||||||
|
where.AddRange(q.CustomWhere);
|
||||||
if (where.Count > 0)
|
if (where.Count > 0)
|
||||||
{
|
{
|
||||||
cmd.CommandText += " WHERE " + string.Join(" AND ", where);
|
cmd.CommandText += " WHERE " + string.Join(" AND ", where);
|
||||||
|
|
|
@ -198,18 +198,27 @@ public class DiscordCommands : ApplicationCommandModule
|
||||||
}
|
}
|
||||||
|
|
||||||
[SlashCommand("quote", "Quote a user")]
|
[SlashCommand("quote", "Quote a user")]
|
||||||
public async Task Quote(InteractionContext ctx, [Option("username", "User to quote")] string username)
|
public async Task Quote(InteractionContext ctx, [Option("username", "User to quote")] string username = "", [Option("guest", "Should the random quote be from a guest only? Only works if username is not specified")] bool guest = false)
|
||||||
{
|
{
|
||||||
await ctx.DeferAsync();
|
if (username != "" && guest)
|
||||||
var chat = await Program.Database.GetChatlogsAsync(new ChatlogQuery
|
{
|
||||||
|
await ctx.CreateResponseAsync("You cannot specify both a username and guest.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await ctx.DeferAsync();
|
||||||
|
var q = new ChatlogQuery
|
||||||
{
|
{
|
||||||
Username = username,
|
|
||||||
Count = 1,
|
Count = 1,
|
||||||
Random = true
|
Random = true
|
||||||
});
|
};
|
||||||
|
if (username != "")
|
||||||
|
q.Username = username;
|
||||||
|
if (guest)
|
||||||
|
q.CustomWhere = ["username REGEXP '^guest'"];
|
||||||
|
var chat = await Program.Database.GetChatlogsAsync(q);
|
||||||
if (chat.Length == 0)
|
if (chat.Length == 0)
|
||||||
{
|
{
|
||||||
await ctx.EditResponseAsync(new DiscordWebhookBuilder().WithContent($"@No messages found for {username}"));
|
await ctx.EditResponseAsync(new DiscordWebhookBuilder().WithContent($"No messages found for {username}"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await ctx.EditResponseAsync(new DiscordWebhookBuilder().WithContent($"> {chat[0].Message}\n\\- {chat[0].Username}, {chat[0].Timestamp} {chat[0].VM}"));
|
await ctx.EditResponseAsync(new DiscordWebhookBuilder().WithContent($"> {chat[0].Message}\n\\- {chat[0].Username}, {chat[0].Timestamp} {chat[0].VM}"));
|
||||||
|
|
Loading…
Reference in a new issue