Adjust JDA example to provide MessageReceivedEvent in commandSender mappers.
This is necessary for the `ChannelArgument` parser to work.
This commit is contained in:
parent
2723ec13f9
commit
fe153f19c1
4 changed files with 39 additions and 9 deletions
|
|
@ -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<MessageReceivedEvent> getEvent() {
|
||||
return Optional.ofNullable(this.event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the user that sent the message
|
||||
*
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue