Skip to content

Commit 8f70a0f

Browse files
author
Kaleidox
committed
apparently discord changed how command events are invoked?
that or some library is different on prod server
1 parent 3a346b8 commit 8f70a0f

1 file changed

Lines changed: 50 additions & 84 deletions

File tree

src/main/java/org/comroid/commands/impl/discord/JdaCommandAdapter.java

Lines changed: 50 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -113,47 +113,43 @@ public void onGenericEvent(@NotNull GenericEvent event) {
113113
bus.publish(event);
114114
}
115115
});
116-
bus.flatMap(SlashCommandInteractionEvent.class)
117-
.listen()
118-
.subscribeData(event -> manager.execute(JdaCommandAdapter.this,
119-
event.getCommandString().substring(1)/*.replaceAll("(\\w+):","$1")*/.split(" "),
120-
event.getOptions()
121-
.stream()
122-
.collect(Collectors.toMap(OptionMapping::getName,
123-
mapping -> switch (mapping.getType()) {
124-
case STRING -> mapping.getAsString();
125-
case INTEGER -> mapping.getAsInt();
126-
case BOOLEAN -> mapping.getAsBoolean();
127-
case USER -> mapping.getAsUser();
128-
case CHANNEL -> mapping.getAsChannel();
129-
case ROLE -> mapping.getAsRole();
130-
case MENTIONABLE -> mapping.getAsMentionable();
131-
case NUMBER -> mapping.getAsDouble();
132-
case ATTACHMENT -> mapping.getAsAttachment();
133-
default ->
134-
throw new IllegalStateException("Unexpected value: " + mapping.getType());
135-
})),
136-
event.getName(),
137-
event,
138-
event.getUser(),
139-
event.getMember(),
140-
event.getGuild(),
141-
event.getChannel()));
116+
bus.flatMap(SlashCommandInteractionEvent.class).listen().subscribeData(event -> {
117+
var commandSplit = event.getCommandString().split(" ");
118+
if (commandSplit[0].startsWith("/")) commandSplit[0] = commandSplit[0].substring(1);
119+
120+
manager.execute(JdaCommandAdapter.this,
121+
commandSplit,
122+
event.getOptions().stream().collect(Collectors.toMap(OptionMapping::getName, mapping -> switch (mapping.getType()) {
123+
case STRING -> mapping.getAsString();
124+
case INTEGER -> mapping.getAsInt();
125+
case BOOLEAN -> mapping.getAsBoolean();
126+
case USER -> mapping.getAsUser();
127+
case CHANNEL -> mapping.getAsChannel();
128+
case ROLE -> mapping.getAsRole();
129+
case MENTIONABLE -> mapping.getAsMentionable();
130+
case NUMBER -> mapping.getAsDouble();
131+
case ATTACHMENT -> mapping.getAsAttachment();
132+
default -> throw new IllegalStateException("Unexpected value: " + mapping.getType());
133+
})),
134+
event.getName(),
135+
event,
136+
event.getUser(),
137+
event.getMember(),
138+
event.getGuild(),
139+
event.getChannel());
140+
});
142141
bus.flatMap(CommandAutoCompleteInteractionEvent.class).listen().subscribeData(event -> {
143142
var option = event.getFocusedOption();
144143
var options = manager.autoComplete(JdaCommandAdapter.this,
145-
event.getCommandString().substring(1).split(" "),
146-
option.getName(),
147-
option.getValue(),
148-
event.getName(),
149-
event,
150-
event.getUser(),
151-
event.getMember(),
152-
event.getGuild(),
153-
event.getChannel())
154-
.map(e -> new net.dv8tion.jda.api.interactions.commands.Command.Choice(e.key(), e.description()))
155-
.limit(25)
156-
.toList();
144+
event.getCommandString().substring(1).split(" "),
145+
option.getName(),
146+
option.getValue(),
147+
event.getName(),
148+
event,
149+
event.getUser(),
150+
event.getMember(),
151+
event.getGuild(),
152+
event.getChannel()).map(e -> new net.dv8tion.jda.api.interactions.commands.Command.Choice(e.key(), e.description())).limit(25).toList();
157153
event.replyChoices(options).queue();
158154
});
159155

@@ -176,14 +172,10 @@ private void registerCommands() {
176172
jda.retrieveCommands().flatMap(existing -> {
177173
RestAction<?> chain = null;
178174
if (purgeCommands) for (var ex : existing)
179-
chain = chain == null
180-
? jda.deleteCommandById(ex.getId())
181-
: chain.flatMap($ -> jda.deleteCommandById(ex.getId()));
175+
chain = chain == null ? jda.deleteCommandById(ex.getId()) : chain.flatMap($ -> jda.deleteCommandById(ex.getId()));
182176

183177
for (var node : manager.getBaseNodes()) {
184-
if (!purgeCommands && existing.stream()
185-
.map(ICommandReference::getName)
186-
.anyMatch(node.getName()::equalsIgnoreCase)) continue;
178+
if (!purgeCommands && existing.stream().map(ICommandReference::getName).anyMatch(node.getName()::equalsIgnoreCase)) continue;
187179

188180
SlashCommandData cmd = Commands.slash(node.getName().toLowerCase(), node.getDescription());
189181

@@ -196,8 +188,7 @@ private void registerCommands() {
196188
}
197189
case Call call -> {
198190
var perm = call.getAttribute().permission();
199-
if (perm.matches("\\d+")) cmd.setDefaultPermissions(DefaultMemberPermissions.enabledFor(Long.parseLong(
200-
perm)));
191+
if (perm.matches("\\d+")) cmd.setDefaultPermissions(DefaultMemberPermissions.enabledFor(Long.parseLong(perm)));
201192
for (var parameter : call.getParameters()) {
202193
cmd.addOption(optionType(parameter),
203194
parameter.name().toLowerCase(),
@@ -209,9 +200,7 @@ private void registerCommands() {
209200
default -> {}
210201
}
211202

212-
chain = (chain == null
213-
? jda.upsertCommand(cmd)
214-
: chain.flatMap($ -> jda.upsertCommand(cmd))).map(it -> {
203+
chain = (chain == null ? jda.upsertCommand(cmd) : chain.flatMap($ -> jda.upsertCommand(cmd))).map(it -> {
215204
namedCommands.put(it.getFullCommandName(), it);
216205
return it;
217206
});
@@ -247,8 +236,7 @@ private SubcommandData makeMember(Call call) {
247236
private OptionType optionType(org.comroid.commands.node.Parameter parameter) {
248237
return Optional.of(parameter.getParam().getType()).flatMap(t -> {
249238
if (Boolean.class.isAssignableFrom(t)) return Optional.of(OptionType.BOOLEAN);
250-
if (Integer.class.isAssignableFrom(t) || Long.class.isAssignableFrom(t))
251-
return Optional.of(OptionType.INTEGER);
239+
if (Integer.class.isAssignableFrom(t) || Long.class.isAssignableFrom(t)) return Optional.of(OptionType.INTEGER);
252240
if (Number.class.isAssignableFrom(t)) return Optional.of(OptionType.NUMBER);
253241
if (User.class.isAssignableFrom(t) || Member.class.isAssignableFrom(t)) return Optional.of(OptionType.USER);
254242
if (Channel.class.isAssignableFrom(t)) return Optional.of(OptionType.CHANNEL);
@@ -299,9 +287,7 @@ public void handleResponse(CommandUsage cmd, @NotNull Object response, Object...
299287
.thenCompose(identity())
300288
.exceptionally(Debug.exceptionLogger("Could not defer reply to command"));
301289
else handleResponse(msg -> {
302-
RestAction<Message> action = e.reply(msg)
303-
.setEphemeral(ephemeral)
304-
.map(hook -> hook.getCallbackResponse().getMessage());
290+
RestAction<Message> action = e.reply(msg).setEphemeral(ephemeral).map(hook -> hook.getCallbackResponse().getMessage());
305291
if (callback[0] != null) action = action.flatMap(it -> callback[0].apply(it).map($ -> it));
306292
return action.submit();
307293
}, user, body).exceptionally(Debug.exceptionLogger("Could not reply to command"));
@@ -319,8 +305,7 @@ public boolean userHasPermission(CommandUsage usage, Object key) {
319305
return usage.getContext()
320306
.stream()
321307
.flatMap(cast(Member.class))
322-
.anyMatch(usr -> usr.getIdLong() == 141476933849448448L /* kaleidox is superadmin for testing purposes */ || usr.hasPermission(
323-
permissions));
308+
.anyMatch(usr -> usr.getIdLong() == 141476933849448448L /* kaleidox is superadmin for testing purposes */ || usr.hasPermission(permissions));
324309
}
325310

326311
@Getter
@@ -413,9 +398,7 @@ public Object getFrom(OptionMapping option) {
413398
};
414399

415400
public static Wrap<JdaCommandAdapter.IOptionAdapter> of(final Class<?> type) {
416-
return Wrap.of(Arrays.stream(values())
417-
.filter(adp -> adp.valueType.getTargetClass().isAssignableFrom(type))
418-
.findAny());
401+
return Wrap.of(Arrays.stream(values()).filter(adp -> adp.valueType.getTargetClass().isAssignableFrom(type)).findAny());
419402
}
420403

421404
ValueType<?> valueType;
@@ -497,8 +480,8 @@ public static class PaginatedList<T> extends ListenerAdapter implements Unchecke
497480
@NonFinal @Setter @Nullable Consumer<EmbedBuilder> embedFinalizer;
498481

499482
public PaginatedList(
500-
MessageChannelUnion channel, Supplier<Stream<T>> source, Comparator<T> comparator,
501-
Function<T, MessageEmbed.Field> toField, String title, int perPage
483+
MessageChannelUnion channel, Supplier<Stream<T>> source, Comparator<T> comparator, Function<T, MessageEmbed.Field> toField,
484+
String title, int perPage
502485
) {
503486
this.channel = channel;
504487
this.source = source;
@@ -584,8 +567,7 @@ protected String pageText() {
584567
return "Page %d / %d".formatted(page, pageCount());
585568
}
586569

587-
private <R extends MessageRequest<R>> RestAction<List<Void>> message(
588-
R request, Function<R, RestAction<Message>> executor) {
570+
private <R extends MessageRequest<R>> RestAction<List<Void>> message(R request, Function<R, RestAction<Message>> executor) {
589571
request.setEmbeds(createEmbed().build());
590572
var message = executor.apply(request);
591573
return refreshReactions(message);
@@ -594,12 +576,7 @@ private <R extends MessageRequest<R>> RestAction<List<Void>> message(
594576
private EmbedBuilder createEmbed() {
595577
var embedBuilder = new EmbedBuilder().setTitle(title).setFooter(pageText());
596578

597-
var entries = source.get()
598-
.sorted(comparator)
599-
.skip((long) perPage * (page - 1))
600-
.limit(perPage)
601-
.map(toField)
602-
.toList();
579+
var entries = source.get().sorted(comparator).skip((long) perPage * (page - 1)).limit(perPage).map(toField).toList();
603580
embedBuilder.getFields().addAll(entries);
604581
finalizeEmbed(embedBuilder);
605582

@@ -612,27 +589,18 @@ private RestAction<List<Void>> refreshReactions(RestAction<Message> message) {
612589
var emojis = concat(of(EMOJI_DELETE, EMOJI_REFRESH),
613590
(pageCount <= 9
614591
? Arrays.stream(EMOJI_NUMBER).skip(1).limit(pageCount)
615-
: of(EMOJI_FIRST_PAGE,
616-
EMOJI_PREV_PAGE,
617-
EMOJI_NEXT_PAGE,
618-
EMOJI_LAST_PAGE))).map(Emoji::fromUnicode).toList();
592+
: of(EMOJI_FIRST_PAGE, EMOJI_PREV_PAGE, EMOJI_NEXT_PAGE, EMOJI_LAST_PAGE))).map(Emoji::fromUnicode).toList();
619593
return concat(
620594
// remove excess page numbers
621-
Arrays.stream(EMOJI_NUMBER)
622-
.skip(1 + pageCount())
623-
.map(Emoji::fromUnicode)
624-
.filter(emoji -> msg.getReaction(emoji) != null),
595+
Arrays.stream(EMOJI_NUMBER).skip(1 + pageCount()).map(Emoji::fromUnicode).filter(emoji -> msg.getReaction(emoji) != null),
625596
// add new reactions
626597
emojis.stream().filter(emoji -> msg.getReaction(emoji) == null)).findAny().isPresent();
627598
}, msg -> {
628599
this.message = msg;
629600
var emojis = concat(of(EMOJI_DELETE, EMOJI_REFRESH),
630601
(pageCount <= 9
631602
? Arrays.stream(EMOJI_NUMBER).skip(1).limit(pageCount)
632-
: of(EMOJI_FIRST_PAGE,
633-
EMOJI_PREV_PAGE,
634-
EMOJI_NEXT_PAGE,
635-
EMOJI_LAST_PAGE))).map(Emoji::fromUnicode).toList();
603+
: of(EMOJI_FIRST_PAGE, EMOJI_PREV_PAGE, EMOJI_NEXT_PAGE, EMOJI_LAST_PAGE))).map(Emoji::fromUnicode).toList();
636604
return RestAction.allOf(concat(
637605
// remove excess page numbers
638606
Arrays.stream(EMOJI_NUMBER)
@@ -641,9 +609,7 @@ private RestAction<List<Void>> refreshReactions(RestAction<Message> message) {
641609
.filter(emoji -> msg.getReaction(emoji) != null)
642610
.map(msg::removeReaction),
643611
// add new reactions
644-
emojis.stream()
645-
.filter(emoji -> msg.getReaction(emoji) == null)
646-
.map(msg::addReaction)).toList());
612+
emojis.stream().filter(emoji -> msg.getReaction(emoji) == null).map(msg::addReaction)).toList());
647613
});
648614
}
649615
}

0 commit comments

Comments
 (0)