Skip to content

Commit 13a9a95

Browse files
committed
Started to implement new command system.
1 parent df52a07 commit 13a9a95

5 files changed

Lines changed: 38 additions & 80 deletions

File tree

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ dependencies {
7777
bootstrap("org.mangorage:mangobotbootstrap:1.0.84")
7878
launchtarget("org.mangorage:mangobotlaunchtarget:0.1.8")
7979

80-
plugin('org.mangorage:mangobot:12.0.91')
80+
plugin('org.mangorage:mangobot:12.0.93')
8181

8282
library('org.slf4j:slf4j-simple:2.0.13') // Use a recent version)
8383
library('org.luaj:luaj-jme:3.0.1')

src/main/java/org/mangorage/mangobotplugin/BotEventListener.java

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
package org.mangorage.mangobotplugin;
22

3-
import net.dv8tion.jda.api.entities.Message;
43
import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent;
54
import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent;
65
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
76
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
87
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
98
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
109
import net.dv8tion.jda.api.hooks.SubscribeEvent;
11-
import org.mangorage.mangobotcore.api.command.v1.ICommandContext;
1210
import org.mangorage.mangobotcore.api.jda.command.v1.CommandResult;
11+
import org.mangorage.mangobotcore.api.jda.command.v2.JDACommandResult;
1312
import org.mangorage.mangobotcore.api.jda.event.v1.CommandEvent;
1413
import org.mangorage.mangobotcore.api.jda.event.v1.DiscordButtonInteractEvent;
1514
import org.mangorage.mangobotcore.api.jda.event.v1.DiscordMessageReactionAddEvent;
@@ -25,19 +24,6 @@
2524
import java.util.concurrent.TimeUnit;
2625

2726
public final class BotEventListener {
28-
private record JDAMessageContext(Message message) implements ICommandContext {
29-
30-
@Override
31-
public <T> T get(Class<T> tClass) {
32-
if (tClass == Message.class) return (T) message;
33-
return null;
34-
}
35-
36-
@Override
37-
public boolean hasType(Class<?> tClass) {
38-
return tClass == Message.class;
39-
}
40-
}
4127

4228

4329
private final MangoBot mangoBot;
@@ -82,16 +68,13 @@ public void onMessageReceived(MessageReceivedEvent event) {
8268
if (isSilent || rawMessage.startsWith(cmdPrefix)) {
8369
final var dispatcher = mangoBot.getCommandDispatcher();
8470
final var result = dispatcher.execute(
85-
isSilent ?
86-
rawMessage.replaceFirst(silentPrefix, "") : rawMessage.replaceFirst(cmdPrefix, ""),
87-
new JDAMessageContext(message)
71+
isSilent ? rawMessage.replaceFirst(silentPrefix, "") : rawMessage.replaceFirst(cmdPrefix, ""),
72+
message
8873
);
8974

90-
if (result != CommandResult.INVALID_COMMAND) {
91-
if (result != null) {
92-
if (result instanceof CommandResult finalResult)
93-
finalResult.accept(message);
94-
}
75+
if (result != JDACommandResult.INVALID_COMMAND) {
76+
if (result.getMessage() != null)
77+
event.getMessage().reply(result.getMessage()).queue();
9578

9679
if (isSilent)
9780
TaskScheduler.getExecutor().schedule(() -> {
Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,19 @@
11
package org.mangorage.mangobotplugin.commands;
22

33
import net.dv8tion.jda.api.entities.Message;
4-
import org.mangorage.mangobotcore.api.command.v1.ICommandDispatcher;
5-
import org.mangorage.mangobotcore.api.command.v1.ICommandNode;
6-
import org.mangorage.mangobotcore.api.jda.command.v1.CommandResult;
7-
import org.mangorage.mangobotcore.api.jda.command.v1.ICommand;
84
import org.mangorage.mangobotcore.api.jda.command.v2.AbstractJDACommand;
5+
import org.mangorage.mangobotcore.api.jda.command.v2.JDACommandResult;
96
import org.mangorage.mangobotcore.api.util.misc.Arguments;
107

11-
import java.util.List;
12-
138
public final class PingCommand extends AbstractJDACommand {
149

15-
public static void register(String id, ICommandDispatcher dispatcher) {
16-
dispatcher.register(
17-
ICommandNode.create(id)
18-
.requires(ctx -> ctx.hasType(Message.class))
19-
.usage("Checks if the discord bot is running!")
20-
.executes((ctx, args) -> {
21-
ctx.get(Message.class).reply("Pong!").queue();
22-
return CommandResult.PASS;
23-
})
24-
.build()
25-
);
10+
public PingCommand(String name) {
11+
super(name);
12+
}
13+
14+
@Override
15+
public JDACommandResult run(Message message, Arguments arguments) {
16+
message.reply("Pong!").queue();
17+
return JDACommandResult.PASS;
2618
}
2719
}

src/main/java/org/mangorage/mangobotplugin/commands/PingsCommand.java

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,13 @@
33
import net.dv8tion.jda.api.EmbedBuilder;
44
import net.dv8tion.jda.api.entities.Message;
55
import net.dv8tion.jda.api.entities.MessageEmbed;
6-
import org.mangorage.mangobotcore.api.command.v1.ICommandDispatcher;
7-
import org.mangorage.mangobotcore.api.command.v1.ICommandNode;
8-
import org.mangorage.mangobotcore.api.jda.command.v1.CommandResult;
9-
import org.mangorage.mangobotcore.api.jda.command.v1.ICommand;
10-
import org.mangorage.mangobotcore.api.util.misc.Arguments;
116

7+
import org.mangorage.mangobotcore.api.jda.command.v2.AbstractJDACommand;
8+
import org.mangorage.mangobotcore.api.jda.command.v2.JDACommandResult;
9+
import org.mangorage.mangobotcore.api.util.misc.Arguments;
1210
import java.awt.*;
13-
import java.util.List;
1411

15-
public final class PingsCommand {
12+
public final class PingsCommand extends AbstractJDACommand {
1613
public static final MessageEmbed EMBED =
1714
new EmbedBuilder()
1815
.setTitle("Please disable pings when replying to others")
@@ -25,21 +22,18 @@ public final class PingsCommand {
2522
"""
2623
).build();
2724

28-
public static void register(String id, ICommandDispatcher dispatcher) {
29-
dispatcher.register(
30-
ICommandNode.create(id)
31-
.requires(ctx -> ctx.hasType(Message.class))
32-
.executes((ctx, args) -> {
33-
final var message = ctx.get(Message.class);
34-
var referenced = message.getReferencedMessage();
35-
if (referenced == null) {
36-
message.getChannel().sendMessageEmbeds(EMBED).queue();
37-
} else {
38-
referenced.replyEmbeds(EMBED).queue();
39-
}
40-
return CommandResult.PASS;
41-
})
42-
.build()
43-
);
25+
public PingsCommand(String name) {
26+
super(name);
27+
}
28+
29+
@Override
30+
public JDACommandResult run(Message message, Arguments arguments) {
31+
var referenced = message.getReferencedMessage();
32+
if (referenced == null) {
33+
message.getChannel().sendMessageEmbeds(EMBED).queue();
34+
} else {
35+
referenced.replyEmbeds(EMBED).queue();
36+
}
37+
return JDACommandResult.PASS;
4438
}
4539
}

src/main/java/org/mangorage/mangobotplugin/entrypoint/MangoBot.java

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,11 @@
1010
import net.dv8tion.jda.api.utils.MemberCachePolicy;
1111
import net.dv8tion.jda.api.utils.cache.CacheFlag;
1212
import org.mangorage.mangobotcore.api.command.v1.ICommandDispatcher;
13-
import org.mangorage.mangobotcore.api.command.v1.ICommandNode;
14-
import org.mangorage.mangobotcore.api.command.v1.ICommandNodeBuilder;
1513
import org.mangorage.mangobotcore.api.config.v1.ConfigTypes;
1614
import org.mangorage.mangobotcore.api.config.v1.IConfig;
1715
import org.mangorage.mangobotcore.api.config.v1.IConfigSetting;
1816
import org.mangorage.mangobotcore.api.jda.command.v1.CommandManager;
19-
import org.mangorage.mangobotcore.api.jda.command.v1.CommandResult;
17+
import org.mangorage.mangobotcore.api.jda.command.v2.JDACommandResult;
2018
import org.mangorage.mangobotcore.api.plugin.v1.MangoBotPlugin;
2119
import org.mangorage.mangobotcore.api.plugin.v1.Plugin;
2220
import org.mangorage.mangobotcore.api.util.jda.ButtonActionRegistry;
@@ -82,7 +80,7 @@ public final class MangoBot implements Plugin {
8280
CacheFlag.FORUM_TAGS
8381
);
8482

85-
private final ICommandDispatcher commandDispatcher = ICommandDispatcher.create(CommandResult.INVALID_COMMAND);
83+
private final ICommandDispatcher<Message, JDACommandResult> commandDispatcher = ICommandDispatcher.create(JDACommandResult.INVALID_COMMAND);
8684
private final CommandManager commandManager = CommandManager.create();
8785
private final PagedListManager pagedListManager = new PagedListManager();
8886

@@ -91,17 +89,8 @@ public final class MangoBot implements Plugin {
9189
public MangoBot() {
9290
ACTION_REGISTRY.register(new TrashButtonAction());
9391

94-
commandDispatcher.register(
95-
ICommandNode.create("new-cmd")
96-
.executes((ctx, args) -> {
97-
ctx.get(Message.class).reply("Whelp it works now!").queue();
98-
return CommandResult.PASS;
99-
})
100-
.build()
101-
);
102-
103-
PingCommand.register("ping", getCommandDispatcher());
104-
PingsCommand.register("pings", getCommandDispatcher());
92+
commandDispatcher.register(new PingCommand("ping"));
93+
commandDispatcher.register(new PingsCommand("pings"));;
10594

10695
commandManager.register(new EmojiCommand());
10796
commandManager.register(new HomeDepotAlertCommand());
@@ -161,7 +150,7 @@ public CommandManager getCommandManager() {
161150
return commandManager;
162151
}
163152

164-
public ICommandDispatcher getCommandDispatcher() {
153+
public ICommandDispatcher<Message, JDACommandResult> getCommandDispatcher() {
165154
return commandDispatcher;
166155
}
167156

0 commit comments

Comments
 (0)