Skip to content

Commit 2f6422e

Browse files
committed
List embed fixer patterns
1 parent e11072b commit 2f6422e

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

Commands/EmbedFixerCommand.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Discord;
22
using Discord.WebSocket;
3+
using Moe.Models;
34
using Moe.Services;
45

56
namespace Moe.Commands;
@@ -31,10 +32,43 @@ public EmbedFixerCommand(EmbedFixerService service) : base("embedfixer")
3132
public override async Task Handle(SocketSlashCommand cmd)
3233
{
3334
var user = (SocketGuildUser)cmd.User;
35+
var guild = user.Guild;
36+
var subcommand = cmd.GetSubcommand();
3437
if (!service.IsAuthorized(user, out var error))
3538
{
3639
await cmd.RespondAsync($"{Emotes.ErrorEmote} " + error);
3740
return;
3841
}
42+
43+
var handle = subcommand.Name switch
44+
{
45+
"list" => ListPatterns(cmd, guild),
46+
_ => throw new InvalidOperationException($"{Emotes.ErrorEmote} Unknown subcommand {subcommand.Name}")
47+
};
48+
49+
await handle;
50+
}
51+
52+
private async Task ListPatterns(SocketSlashCommand cmd, SocketGuild guild)
53+
{
54+
var patterns = await service.GetPatternsFromCache(guild.Id);
55+
if (patterns.Count == 0)
56+
{
57+
await cmd.RespondAsync($"{Emotes.ErrorEmote} There are no embed fixer patterns");
58+
return;
59+
}
60+
61+
var embed = new PaginatableEmbedBuilder<EmbedFixerPattern>
62+
(5, patterns, items =>
63+
new EmbedBuilder()
64+
.WithAuthor(guild.Name, iconUrl: guild.IconUrl)
65+
.WithTitle("Embed fixer patterns")
66+
.WithFields(items.Select(x => new EmbedFieldBuilder()
67+
.WithName(x.Pattern)
68+
.WithValue(x.Replacement)))
69+
.WithColor(Colors.Blurple)
70+
);
71+
72+
await cmd.RespondAsync(embed: embed.Embed, components: embed.Components);
3973
}
4074
}

Services/EmbedFixerService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ private async Task<List<EmbedFixerPattern>> GetPatterns(ulong guildId)
6161
});
6262
}
6363

64-
private async Task<List<EmbedFixerPattern>> GetPatternsFromCache(ulong guildId)
64+
public async Task<List<EmbedFixerPattern>> GetPatternsFromCache(ulong guildId)
6565
{
6666
if (patternsCache.TryGetValue(guildId, out var patterns))
6767
{

0 commit comments

Comments
 (0)