Some improvements/fixes

This commit is contained in:
Vankka 2024-03-02 16:53:01 +02:00
parent 1940d78159
commit fdb02920a2
No known key found for this signature in database
GPG Key ID: 6E50CB7A29B96AD0
6 changed files with 21 additions and 50 deletions

View File

@ -24,7 +24,6 @@
package com.discordsrv.api.discord.entity.interaction;
import com.discordsrv.api.discord.entity.JDAEntity;
import com.discordsrv.api.discord.entity.interaction.component.impl.Modal;
import com.discordsrv.api.discord.entity.message.ReceivedDiscordMessage;
import com.discordsrv.api.discord.entity.message.SendableDiscordMessage;
import net.dv8tion.jda.api.interactions.InteractionHook;
@ -36,13 +35,9 @@ public interface DiscordInteractionHook extends JDAEntity<InteractionHook> {
long getExpiryTime();
boolean isExpired();
CompletableFuture<DiscordInteractionHook> replyLater(boolean ephemeral);
CompletableFuture<ReceivedDiscordMessage> editOriginal(SendableDiscordMessage message);
CompletableFuture<DiscordInteractionHook> reply(SendableDiscordMessage message, boolean ephemeral);
default CompletableFuture<DiscordInteractionHook> reply(SendableDiscordMessage message) {
return reply(message, false);
CompletableFuture<ReceivedDiscordMessage> sendMessage(SendableDiscordMessage message, boolean ephemeral);
default CompletableFuture<ReceivedDiscordMessage> sendMessage(SendableDiscordMessage message) {
return sendMessage(message, false);
}
CompletableFuture<Void> replyModal(Modal modal);
}

View File

@ -23,6 +23,8 @@
package com.discordsrv.api.placeholder;
import org.jetbrains.annotations.NotNull;
/**
* Represents content that doesn't need to be processed for the purposes of DiscordSRV's processing.
*/
@ -45,12 +47,12 @@ public class FormattedText implements CharSequence {
}
@Override
public CharSequence subSequence(int start, int end) {
public @NotNull CharSequence subSequence(int start, int end) {
return text.subSequence(start, end);
}
@Override
public String toString() {
public @NotNull String toString() {
return text.toString();
}
}

View File

@ -1,5 +1,4 @@
// Relocations
[
// JDA, WS
'net.dv8tion.jda',
@ -40,6 +39,9 @@
'alexh',
// Adventure (API isn't relocated always)
'net.kyori.adventure.ansi',
'net.kyori.adventure.examination',
'net.kyori.adventure.option',
'net.kyori.adventure.platform',
'net.kyori.adventure.text.serializer',

View File

@ -56,13 +56,8 @@ public class BukkitGameCommandExecutionHelper implements GameCommandExecutionHel
}
// Get the arguments minus the last one (if any)
String prefix = String.join(" ", parts.subList(0, parts.size() - (!parts.isEmpty() ? 1 : 0)));
if (!prefix.isEmpty()) {
prefix = prefix + " ";
}
String prefix = parts.isEmpty() ? "" : String.join(" ", parts.subList(0, parts.size() - 1)) + " ";
CompletableFuture<List<String>> future = new CompletableFuture<>();
String finalPrefix = prefix;
CommandSender commandSender = discordSRV.server().getConsoleSender();
discordSRV.scheduler().runOnMainThread(commandSender, () -> {
@ -71,7 +66,7 @@ public class BukkitGameCommandExecutionHelper implements GameCommandExecutionHel
List<String> suggestions = new ArrayList<>();
for (String suggestion : completions) {
suggestions.add(commandName + " " + finalPrefix + suggestion);
suggestions.add(commandName + " " + prefix + suggestion);
}
future.complete(suggestions);
} catch (Throwable t) {

View File

@ -71,8 +71,9 @@ public class ExecuteCommand implements Consumer<DiscordChatInputInteractionEvent
@Override
public void accept(DiscordChatInputInteractionEvent event) {
DiscordCommandConfig.ExecuteConfig config = discordSRV.config().discordCommand.execute;
boolean ephemeral = config.ephemeral;
if (!config.enabled) {
event.reply(SendableDiscordMessage.builder().setContent("The execute command is disabled").build());
event.reply(SendableDiscordMessage.builder().setContent("The execute command is disabled").build(), ephemeral);
return;
}
@ -82,12 +83,11 @@ public class ExecuteCommand implements Consumer<DiscordChatInputInteractionEvent
}
if (isNotAcceptableCommand(event.getMember(), event.getUser(), command, false)) {
event.reply(SendableDiscordMessage.builder().setContent("You do not have permission to run that command").build());
event.reply(SendableDiscordMessage.builder().setContent("You do not have permission to run that command").build(), ephemeral);
return;
}
boolean ephemeral = config.ephemeral;
event.reply(SendableDiscordMessage.builder().setContent("Executing command `" + command + "`").build())
event.reply(SendableDiscordMessage.builder().setContent("Executing command `" + command + "`").build(), ephemeral)
.whenComplete((ih, t) -> {
if (t != null) {
return;
@ -242,7 +242,7 @@ public class ExecuteCommand implements Consumer<DiscordChatInputInteractionEvent
}
if (prefix.length() + suffix.length() + discord.length() + joiner.length() + delimiter.length() > Message.MAX_CONTENT_LENGTH) {
hook.reply(SendableDiscordMessage.builder().setContent(prefix + joiner + suffix).build(), ephemeral);
hook.sendMessage(SendableDiscordMessage.builder().setContent(prefix + joiner + suffix).build(), ephemeral);
joiner = new StringJoiner(delimiter);
}
@ -250,7 +250,7 @@ public class ExecuteCommand implements Consumer<DiscordChatInputInteractionEvent
}
future = null;
}
hook.reply(SendableDiscordMessage.builder().setContent(prefix + joiner + suffix).build(), ephemeral);
hook.sendMessage(SendableDiscordMessage.builder().setContent(prefix + joiner + suffix).build(), ephemeral);
}
}

View File

@ -19,15 +19,12 @@
package com.discordsrv.common.discord.api.entity.component;
import com.discordsrv.api.discord.entity.interaction.DiscordInteractionHook;
import com.discordsrv.api.discord.entity.interaction.component.impl.Modal;
import com.discordsrv.api.discord.entity.message.ReceivedDiscordMessage;
import com.discordsrv.api.discord.entity.message.SendableDiscordMessage;
import com.discordsrv.common.DiscordSRV;
import com.discordsrv.common.discord.api.entity.message.ReceivedDiscordMessageImpl;
import com.discordsrv.common.discord.api.entity.message.util.SendableDiscordMessageUtil;
import net.dv8tion.jda.api.interactions.InteractionHook;
import net.dv8tion.jda.api.interactions.callbacks.IModalCallback;
import net.dv8tion.jda.api.interactions.callbacks.IReplyCallback;
import java.util.concurrent.CompletableFuture;
@ -56,15 +53,6 @@ public class DiscordInteractionHookImpl implements DiscordInteractionHook {
return hook.isExpired();
}
@Override
public CompletableFuture<DiscordInteractionHook> replyLater(boolean ephemeral) {
if (!(hook instanceof IReplyCallback)) {
throw new IllegalStateException("This interaction cannot be replied to");
}
return ((IReplyCallback) hook).deferReply(ephemeral).submit()
.thenApply(hook -> new DiscordInteractionHookImpl(discordSRV, hook));
}
@Override
public CompletableFuture<ReceivedDiscordMessage> editOriginal(SendableDiscordMessage message) {
return hook.editOriginal(SendableDiscordMessageUtil.toJDAEdit(message)).submit()
@ -72,19 +60,8 @@ public class DiscordInteractionHookImpl implements DiscordInteractionHook {
}
@Override
public CompletableFuture<DiscordInteractionHook> reply(SendableDiscordMessage message, boolean ephemeral) {
if (!(hook instanceof IReplyCallback)) {
throw new IllegalStateException("This interaction cannot be replied to");
}
return ((IReplyCallback) hook).reply(SendableDiscordMessageUtil.toJDASend(message)).setEphemeral(ephemeral).submit()
.thenApply(hook -> new DiscordInteractionHookImpl(discordSRV, hook));
}
@Override
public CompletableFuture<Void> replyModal(Modal modal) {
if (!(hook instanceof IModalCallback)) {
throw new IllegalStateException("This interaction cannot be replied to");
}
return ((IModalCallback) hook).replyModal(modal.asJDA()).submit();
public CompletableFuture<ReceivedDiscordMessage> sendMessage(SendableDiscordMessage message, boolean ephemeral) {
return hook.sendMessage(SendableDiscordMessageUtil.toJDASend(message)).setEphemeral(ephemeral).submit()
.thenApply(msg -> ReceivedDiscordMessageImpl.fromJDA(discordSRV, msg));
}
}