File tree Expand file tree Collapse file tree 2 files changed +35
-1
lines changed Expand file tree Collapse file tree 2 files changed +35
-1
lines changed Original file line number Diff line number Diff line change 1
1
using Discord ;
2
2
using Discord . WebSocket ;
3
+ using Moe . Models ;
3
4
using Moe . Services ;
4
5
5
6
namespace Moe . Commands ;
@@ -31,10 +32,43 @@ public EmbedFixerCommand(EmbedFixerService service) : base("embedfixer")
31
32
public override async Task Handle ( SocketSlashCommand cmd )
32
33
{
33
34
var user = ( SocketGuildUser ) cmd . User ;
35
+ var guild = user . Guild ;
36
+ var subcommand = cmd . GetSubcommand ( ) ;
34
37
if ( ! service . IsAuthorized ( user , out var error ) )
35
38
{
36
39
await cmd . RespondAsync ( $ "{ Emotes . ErrorEmote } " + error ) ;
37
40
return ;
38
41
}
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 ) ;
39
73
}
40
74
}
Original file line number Diff line number Diff line change @@ -61,7 +61,7 @@ private async Task<List<EmbedFixerPattern>> GetPatterns(ulong guildId)
61
61
} ) ;
62
62
}
63
63
64
- private async Task < List < EmbedFixerPattern > > GetPatternsFromCache ( ulong guildId )
64
+ public async Task < List < EmbedFixerPattern > > GetPatternsFromCache ( ulong guildId )
65
65
{
66
66
if ( patternsCache . TryGetValue ( guildId , out var patterns ) )
67
67
{
You can’t perform that action at this time.
0 commit comments