From fe153f19c1b830fd3b96002687c605448d55ba7a Mon Sep 17 00:00:00 2001 From: p5nbTgip0r Date: Tue, 5 Jan 2021 02:37:53 -0800 Subject: [PATCH] Adjust JDA example to provide `MessageReceivedEvent` in commandSender mappers. This is necessary for the `ChannelArgument` parser to work. --- .../examples/jda/CustomUser.java | 22 ++++++++++++++++++- .../examples/jda/ExampleBot.java | 12 ++++++---- .../examples/jda/GuildUser.java | 7 ++++-- .../examples/jda/PrivateUser.java | 7 ++++-- 4 files changed, 39 insertions(+), 9 deletions(-) diff --git a/examples/example-jda/src/main/java/cloud/commandframework/examples/jda/CustomUser.java b/examples/example-jda/src/main/java/cloud/commandframework/examples/jda/CustomUser.java index 065eab2d..6878b638 100644 --- a/examples/example-jda/src/main/java/cloud/commandframework/examples/jda/CustomUser.java +++ b/examples/example-jda/src/main/java/cloud/commandframework/examples/jda/CustomUser.java @@ -25,24 +25,44 @@ package cloud.commandframework.examples.jda; import net.dv8tion.jda.api.entities.MessageChannel; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.Optional; public abstract class CustomUser { + private final MessageReceivedEvent event; private final User user; private final MessageChannel channel; /** * Construct a user * + * @param event The message received event * @param user Sending user * @param channel Channel that the message was sent in */ - protected CustomUser(final @NonNull User user, final @NonNull MessageChannel channel) { + protected CustomUser( + final @Nullable MessageReceivedEvent event, + final @NonNull User user, + final @NonNull MessageChannel channel + ) { + this.event = event; this.user = user; this.channel = channel; } + /** + * Get the message received event + * + * @return Optional of the message received event + */ + public final @NonNull Optional getEvent() { + return Optional.ofNullable(this.event); + } + /** * Get the user that sent the message * diff --git a/examples/example-jda/src/main/java/cloud/commandframework/examples/jda/ExampleBot.java b/examples/example-jda/src/main/java/cloud/commandframework/examples/jda/ExampleBot.java index 4766ffd4..9607b899 100644 --- a/examples/example-jda/src/main/java/cloud/commandframework/examples/jda/ExampleBot.java +++ b/examples/example-jda/src/main/java/cloud/commandframework/examples/jda/ExampleBot.java @@ -35,6 +35,7 @@ import net.dv8tion.jda.api.JDABuilder; import net.dv8tion.jda.api.entities.Activity; import net.dv8tion.jda.api.entities.TextChannel; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import net.dv8tion.jda.api.requests.GatewayIntent; import net.dv8tion.jda.api.utils.ChunkingFilter; import net.dv8tion.jda.api.utils.MemberCachePolicy; @@ -72,27 +73,30 @@ public final class ExampleBot { (sender, permission) -> permissionRegistry.hasPermission(sender.getUser().getIdLong(), permission), CommandExecutionCoordinator.simpleCoordinator(), sender -> { + MessageReceivedEvent event = sender.getEvent().orElse(null); + if (sender instanceof JDAPrivateSender) { JDAPrivateSender jdaPrivateSender = (JDAPrivateSender) sender; - return new PrivateUser(jdaPrivateSender.getUser(), jdaPrivateSender.getPrivateChannel()); + return new PrivateUser(event, jdaPrivateSender.getUser(), jdaPrivateSender.getPrivateChannel()); } if (sender instanceof JDAGuildSender) { JDAGuildSender jdaGuildSender = (JDAGuildSender) sender; - return new GuildUser(jdaGuildSender.getMember(), jdaGuildSender.getTextChannel()); + return new GuildUser(event, jdaGuildSender.getMember(), jdaGuildSender.getTextChannel()); } throw new UnsupportedOperationException(); }, user -> { + MessageReceivedEvent event = user.getEvent().orElse(null); if (user instanceof PrivateUser) { PrivateUser privateUser = (PrivateUser) user; - return new JDAPrivateSender(null, privateUser.getUser(), privateUser.getPrivateChannel()); + return new JDAPrivateSender(event, privateUser.getUser(), privateUser.getPrivateChannel()); } if (user instanceof GuildUser) { GuildUser guildUser = (GuildUser) user; - return new JDAGuildSender(null, guildUser.getMember(), guildUser.getTextChannel()); + return new JDAGuildSender(event, guildUser.getMember(), guildUser.getTextChannel()); } throw new UnsupportedOperationException(); diff --git a/examples/example-jda/src/main/java/cloud/commandframework/examples/jda/GuildUser.java b/examples/example-jda/src/main/java/cloud/commandframework/examples/jda/GuildUser.java index 87842c80..5b723dcf 100644 --- a/examples/example-jda/src/main/java/cloud/commandframework/examples/jda/GuildUser.java +++ b/examples/example-jda/src/main/java/cloud/commandframework/examples/jda/GuildUser.java @@ -25,7 +25,9 @@ package cloud.commandframework.examples.jda; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.TextChannel; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; public final class GuildUser extends CustomUser { @@ -35,11 +37,12 @@ public final class GuildUser extends CustomUser { /** * Construct a Guild user * + * @param event The message received event * @param member Guild member that sent the message * @param channel Text channel that the message was sent in */ - public GuildUser(final @NonNull Member member, final @NonNull TextChannel channel) { - super(member.getUser(), channel); + public GuildUser(final @Nullable MessageReceivedEvent event, final @NonNull Member member, final @NonNull TextChannel channel) { + super(event, member.getUser(), channel); this.member = member; this.channel = channel; } diff --git a/examples/example-jda/src/main/java/cloud/commandframework/examples/jda/PrivateUser.java b/examples/example-jda/src/main/java/cloud/commandframework/examples/jda/PrivateUser.java index 86f4b56d..80f7aad6 100644 --- a/examples/example-jda/src/main/java/cloud/commandframework/examples/jda/PrivateUser.java +++ b/examples/example-jda/src/main/java/cloud/commandframework/examples/jda/PrivateUser.java @@ -25,7 +25,9 @@ package cloud.commandframework.examples.jda; import net.dv8tion.jda.api.entities.PrivateChannel; import net.dv8tion.jda.api.entities.User; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; public final class PrivateUser extends CustomUser { @@ -34,11 +36,12 @@ public final class PrivateUser extends CustomUser { /** * Construct a Private user * + * @param event The message received event * @param user User that sent the message * @param channel Text channel that the message was sent in */ - public PrivateUser(final @NonNull User user, final @NonNull PrivateChannel channel) { - super(user, channel); + public PrivateUser(final @Nullable MessageReceivedEvent event, final @NonNull User user, final @NonNull PrivateChannel channel) { + super(event, user, channel); this.privateChannel = channel; }