Create custom mapper for permissions
Adds the possibility to specify a custom mapper for command permissions (e.G. for permissions in private messages or if you just don't want to use discord's built-in permission system)
This commit is contained in:
parent
d6a2062069
commit
e5f9b3d8ca
1 changed files with 10 additions and 0 deletions
|
|
@ -34,7 +34,9 @@ import net.dv8tion.jda.api.Permission;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
|
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.function.BiFunction;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -46,6 +48,7 @@ public class JDACommandManager<C> extends CommandManager<C> {
|
||||||
private final long botId;
|
private final long botId;
|
||||||
|
|
||||||
private final Function<@NonNull C, @NonNull String> prefixMapper;
|
private final Function<@NonNull C, @NonNull String> prefixMapper;
|
||||||
|
private final BiFunction<@NonNull C, @NonNull String, @NonNull Boolean> permissionMapper;
|
||||||
private final Function<@NonNull MessageReceivedEvent, @NonNull C> commandSenderMapper;
|
private final Function<@NonNull MessageReceivedEvent, @NonNull C> commandSenderMapper;
|
||||||
private final Function<@NonNull C, @NonNull MessageReceivedEvent> backwardsCommandSenderMapper;
|
private final Function<@NonNull C, @NonNull MessageReceivedEvent> backwardsCommandSenderMapper;
|
||||||
|
|
||||||
|
|
@ -55,6 +58,7 @@ public class JDACommandManager<C> extends CommandManager<C> {
|
||||||
*
|
*
|
||||||
* @param jda JDA instance to register against
|
* @param jda JDA instance to register against
|
||||||
* @param prefixMapper Function that maps the sender to a command prefix string
|
* @param prefixMapper Function that maps the sender to a command prefix string
|
||||||
|
* @param permissionMapper Function used to check if a command sender has the permission to execute a command
|
||||||
* @param commandExecutionCoordinator Coordination provider
|
* @param commandExecutionCoordinator Coordination provider
|
||||||
* @param commandSenderMapper Function that maps {@link MessageReceivedEvent} to the command sender type
|
* @param commandSenderMapper Function that maps {@link MessageReceivedEvent} to the command sender type
|
||||||
* @param backwardsCommandSenderMapper Function that maps the command sender type to {@link MessageReceivedEvent}
|
* @param backwardsCommandSenderMapper Function that maps the command sender type to {@link MessageReceivedEvent}
|
||||||
|
|
@ -62,12 +66,14 @@ public class JDACommandManager<C> extends CommandManager<C> {
|
||||||
*/
|
*/
|
||||||
public JDACommandManager(final @NonNull JDA jda,
|
public JDACommandManager(final @NonNull JDA jda,
|
||||||
final @NonNull Function<@NonNull C, @NonNull String> prefixMapper,
|
final @NonNull Function<@NonNull C, @NonNull String> prefixMapper,
|
||||||
|
final @Nullable BiFunction<@NonNull C, @NonNull String, @NonNull Boolean> permissionMapper,
|
||||||
final @NonNull Function<CommandTree<C>, CommandExecutionCoordinator<C>> commandExecutionCoordinator,
|
final @NonNull Function<CommandTree<C>, CommandExecutionCoordinator<C>> commandExecutionCoordinator,
|
||||||
final @NonNull Function<@NonNull MessageReceivedEvent, @NonNull C> commandSenderMapper,
|
final @NonNull Function<@NonNull MessageReceivedEvent, @NonNull C> commandSenderMapper,
|
||||||
final @NonNull Function<@NonNull C, @NonNull MessageReceivedEvent> backwardsCommandSenderMapper)
|
final @NonNull Function<@NonNull C, @NonNull MessageReceivedEvent> backwardsCommandSenderMapper)
|
||||||
throws InterruptedException {
|
throws InterruptedException {
|
||||||
super(commandExecutionCoordinator, CommandRegistrationHandler.nullCommandRegistrationHandler());
|
super(commandExecutionCoordinator, CommandRegistrationHandler.nullCommandRegistrationHandler());
|
||||||
this.prefixMapper = prefixMapper;
|
this.prefixMapper = prefixMapper;
|
||||||
|
this.permissionMapper = permissionMapper;
|
||||||
this.commandSenderMapper = commandSenderMapper;
|
this.commandSenderMapper = commandSenderMapper;
|
||||||
this.backwardsCommandSenderMapper = backwardsCommandSenderMapper;
|
this.backwardsCommandSenderMapper = backwardsCommandSenderMapper;
|
||||||
jda.addEventListener(new JDACommandListener<>(this));
|
jda.addEventListener(new JDACommandListener<>(this));
|
||||||
|
|
@ -108,6 +114,10 @@ public class JDACommandManager<C> extends CommandManager<C> {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (permissionMapper != null) {
|
||||||
|
return permissionMapper.apply(sender, permission);
|
||||||
|
}
|
||||||
|
|
||||||
MessageReceivedEvent message = backwardsCommandSenderMapper.apply(sender);
|
MessageReceivedEvent message = backwardsCommandSenderMapper.apply(sender);
|
||||||
Member member = message.getMember();
|
Member member = message.getMember();
|
||||||
if (member == null) {
|
if (member == null) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue