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.MessageChannel;
|
||||||
import net.dv8tion.jda.api.entities.User;
|
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.NonNull;
|
||||||
|
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
public abstract class CustomUser {
|
public abstract class CustomUser {
|
||||||
|
|
||||||
|
private final MessageReceivedEvent event;
|
||||||
private final User user;
|
private final User user;
|
||||||
private final MessageChannel channel;
|
private final MessageChannel channel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct a user
|
* Construct a user
|
||||||
*
|
*
|
||||||
|
* @param event The message received event
|
||||||
* @param user Sending user
|
* @param user Sending user
|
||||||
* @param channel Channel that the message was sent in
|
* @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.user = user;
|
||||||
this.channel = channel;
|
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
|
* 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.Activity;
|
||||||
import net.dv8tion.jda.api.entities.TextChannel;
|
import net.dv8tion.jda.api.entities.TextChannel;
|
||||||
import net.dv8tion.jda.api.entities.User;
|
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.requests.GatewayIntent;
|
||||||
import net.dv8tion.jda.api.utils.ChunkingFilter;
|
import net.dv8tion.jda.api.utils.ChunkingFilter;
|
||||||
import net.dv8tion.jda.api.utils.MemberCachePolicy;
|
import net.dv8tion.jda.api.utils.MemberCachePolicy;
|
||||||
|
|
@ -72,27 +73,30 @@ public final class ExampleBot {
|
||||||
(sender, permission) -> permissionRegistry.hasPermission(sender.getUser().getIdLong(), permission),
|
(sender, permission) -> permissionRegistry.hasPermission(sender.getUser().getIdLong(), permission),
|
||||||
CommandExecutionCoordinator.simpleCoordinator(),
|
CommandExecutionCoordinator.simpleCoordinator(),
|
||||||
sender -> {
|
sender -> {
|
||||||
|
MessageReceivedEvent event = sender.getEvent().orElse(null);
|
||||||
|
|
||||||
if (sender instanceof JDAPrivateSender) {
|
if (sender instanceof JDAPrivateSender) {
|
||||||
JDAPrivateSender jdaPrivateSender = (JDAPrivateSender) sender;
|
JDAPrivateSender jdaPrivateSender = (JDAPrivateSender) sender;
|
||||||
return new PrivateUser(jdaPrivateSender.getUser(), jdaPrivateSender.getPrivateChannel());
|
return new PrivateUser(event, jdaPrivateSender.getUser(), jdaPrivateSender.getPrivateChannel());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sender instanceof JDAGuildSender) {
|
if (sender instanceof JDAGuildSender) {
|
||||||
JDAGuildSender jdaGuildSender = (JDAGuildSender) sender;
|
JDAGuildSender jdaGuildSender = (JDAGuildSender) sender;
|
||||||
return new GuildUser(jdaGuildSender.getMember(), jdaGuildSender.getTextChannel());
|
return new GuildUser(event, jdaGuildSender.getMember(), jdaGuildSender.getTextChannel());
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
},
|
},
|
||||||
user -> {
|
user -> {
|
||||||
|
MessageReceivedEvent event = user.getEvent().orElse(null);
|
||||||
if (user instanceof PrivateUser) {
|
if (user instanceof PrivateUser) {
|
||||||
PrivateUser privateUser = (PrivateUser) user;
|
PrivateUser privateUser = (PrivateUser) user;
|
||||||
return new JDAPrivateSender(null, privateUser.getUser(), privateUser.getPrivateChannel());
|
return new JDAPrivateSender(event, privateUser.getUser(), privateUser.getPrivateChannel());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (user instanceof GuildUser) {
|
if (user instanceof GuildUser) {
|
||||||
GuildUser guildUser = (GuildUser) user;
|
GuildUser guildUser = (GuildUser) user;
|
||||||
return new JDAGuildSender(null, guildUser.getMember(), guildUser.getTextChannel());
|
return new JDAGuildSender(event, guildUser.getMember(), guildUser.getTextChannel());
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new UnsupportedOperationException();
|
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.Member;
|
||||||
import net.dv8tion.jda.api.entities.TextChannel;
|
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.NonNull;
|
||||||
|
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||||
|
|
||||||
public final class GuildUser extends CustomUser {
|
public final class GuildUser extends CustomUser {
|
||||||
|
|
||||||
|
|
@ -35,11 +37,12 @@ public final class GuildUser extends CustomUser {
|
||||||
/**
|
/**
|
||||||
* Construct a Guild user
|
* Construct a Guild user
|
||||||
*
|
*
|
||||||
|
* @param event The message received event
|
||||||
* @param member Guild member that sent the message
|
* @param member Guild member that sent the message
|
||||||
* @param channel Text channel that the message was sent in
|
* @param channel Text channel that the message was sent in
|
||||||
*/
|
*/
|
||||||
public GuildUser(final @NonNull Member member, final @NonNull TextChannel channel) {
|
public GuildUser(final @Nullable MessageReceivedEvent event, final @NonNull Member member, final @NonNull TextChannel channel) {
|
||||||
super(member.getUser(), channel);
|
super(event, member.getUser(), channel);
|
||||||
this.member = member;
|
this.member = member;
|
||||||
this.channel = channel;
|
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.PrivateChannel;
|
||||||
import net.dv8tion.jda.api.entities.User;
|
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.NonNull;
|
||||||
|
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||||
|
|
||||||
public final class PrivateUser extends CustomUser {
|
public final class PrivateUser extends CustomUser {
|
||||||
|
|
||||||
|
|
@ -34,11 +36,12 @@ public final class PrivateUser extends CustomUser {
|
||||||
/**
|
/**
|
||||||
* Construct a Private user
|
* Construct a Private user
|
||||||
*
|
*
|
||||||
|
* @param event The message received event
|
||||||
* @param user User that sent the message
|
* @param user User that sent the message
|
||||||
* @param channel Text channel that the message was sent in
|
* @param channel Text channel that the message was sent in
|
||||||
*/
|
*/
|
||||||
public PrivateUser(final @NonNull User user, final @NonNull PrivateChannel channel) {
|
public PrivateUser(final @Nullable MessageReceivedEvent event, final @NonNull User user, final @NonNull PrivateChannel channel) {
|
||||||
super(user, channel);
|
super(event, user, channel);
|
||||||
this.privateChannel = channel;
|
this.privateChannel = channel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue