22
33import net .dv8tion .jda .api .entities .Message ;
44import org .mangorage .mangobotcore .api .command .v1 .CommandParseResult ;
5+ import org .mangorage .mangobotcore .api .command .v1 .argument .RequiredArg ;
6+ import org .mangorage .mangobotcore .api .command .v1 .argument .types .BooleanArgumentType ;
7+ import org .mangorage .mangobotcore .api .command .v1 .argument .types .EnumArgumentType ;
8+ import org .mangorage .mangobotcore .api .command .v1 .argument .types .StringArgumentType ;
59import org .mangorage .mangobotcore .api .jda .command .v2 .AbstractJDACommand ;
610import org .mangorage .mangobotcore .api .jda .command .v2 .JDACommandResult ;
11+ import org .mangorage .mangobotplugin .commands .trick .Trick ;
712import org .mangorage .mangobotplugin .commands .trick .TrickManager ;
13+ import org .mangorage .mangobotplugin .commands .trick .TrickType ;
814
915public final class TrickAddSubCommand extends AbstractJDACommand {
1016 private final TrickManager trickManager ;
17+ private final RequiredArg <String > trickArg = registerRequiredArgument ("trick" , "The trick to add" , StringArgumentType .single ());
18+ private final RequiredArg <TrickType > trickTypeArg = registerRequiredArgument ("type" , "The trick type" , EnumArgumentType .of (TrickType .class ));
19+ private final RequiredArg <Boolean > trickSuppressArg = registerRequiredArgument ("suppress" , "Whether to suppress output" , BooleanArgumentType .INSTANCE );
20+ private final RequiredArg <String > trickDataArg = registerRequiredArgument ("data" , "The trick data" , StringArgumentType .quote ());
1121
1222 public TrickAddSubCommand (String name , TrickManager trickManager ) {
1323 super (name );
@@ -16,7 +26,40 @@ public TrickAddSubCommand(String name, TrickManager trickManager) {
1626
1727 @ Override
1828 public JDACommandResult run (Message context , String [] arguments , CommandParseResult commandParseResult ) throws Throwable {
19- context .reply ("Adding tricks is under maintenance!" ).queue ();
29+ final var trickName = trickArg .get (arguments , commandParseResult );
30+ final var trickType = trickTypeArg .get (arguments , commandParseResult );
31+ final var trickSuppress = trickSuppressArg .get (arguments , commandParseResult );
32+ final var trickData = trickDataArg .get (arguments , commandParseResult );
33+
34+ final var trick = new Trick (trickName , context .getGuildIdLong ());
35+
36+ if (trickManager .getTrickForGuildByName (context .getGuildIdLong (), trickName ) != null ) {
37+ context .reply ("A trick with that name already exists!" ).queue ();
38+ return JDACommandResult .PASS ;
39+ }
40+
41+ switch (trickType ) {
42+ case NORMAL -> {
43+ trick .setType (TrickType .NORMAL );
44+ trick .setContent (trickData );
45+ }
46+ case ALIAS -> {
47+ trick .setType (TrickType .ALIAS );
48+ trick .setAliasTarget (trickData );
49+ }
50+ case SCRIPT -> {
51+ trick .setType (TrickType .SCRIPT );
52+ trick .setScript (trickData );
53+ }
54+ }
55+
56+ trick .setSuppress (trickSuppress );
57+ trick .setLastUserEdited (context .getAuthor ().getIdLong ());
58+ trick .setOwnerID (context .getAuthor ().getIdLong ());
59+
60+ trickManager .addTrick (trick );
61+ context .reply ("Added Trick '" + trickName + "' of type '" + trickType + "'!" ).queue ();
62+
2063 return JDACommandResult .PASS ;
2164 }
2265}
0 commit comments