Update Permission Mapper + added default discord permissions
The permission mapper now does what it was supposed to do and now has support for discord's default permissions
This commit is contained in:
parent
90940fafd7
commit
7fee9546e5
1 changed files with 31 additions and 8 deletions
|
|
@ -27,20 +27,26 @@ import cloud.commandframework.CommandManager;
|
||||||
import cloud.commandframework.CommandTree;
|
import cloud.commandframework.CommandTree;
|
||||||
import cloud.commandframework.execution.CommandExecutionCoordinator;
|
import cloud.commandframework.execution.CommandExecutionCoordinator;
|
||||||
import cloud.commandframework.javacord.sender.JavacordCommandSender;
|
import cloud.commandframework.javacord.sender.JavacordCommandSender;
|
||||||
|
import cloud.commandframework.javacord.sender.JavacordServerSender;
|
||||||
import cloud.commandframework.meta.SimpleCommandMeta;
|
import cloud.commandframework.meta.SimpleCommandMeta;
|
||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
|
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||||
import org.javacord.api.DiscordApi;
|
import org.javacord.api.DiscordApi;
|
||||||
|
import org.javacord.api.entity.permission.PermissionType;
|
||||||
|
import org.javacord.api.entity.user.User;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.function.BiFunction;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
public class JavacordCommandManager<C> extends CommandManager<C> {
|
public class JavacordCommandManager<C> extends CommandManager<C> {
|
||||||
|
|
||||||
private final DiscordApi discordApi;
|
private final DiscordApi discordApi;
|
||||||
private final Function<JavacordCommandSender, C> commandSenderMapper;
|
private final Function<@NonNull JavacordCommandSender, @NonNull C> commandSenderMapper;
|
||||||
private final Function<C, JavacordCommandSender> backwardsCommandSenderMapper;
|
private final Function<@NonNull C, @NonNull JavacordCommandSender> backwardsCommandSenderMapper;
|
||||||
|
|
||||||
private final Function<C, String> commandPrefixMapper;
|
private final Function<@NonNull C, @NonNull String> commandPrefixMapper;
|
||||||
private final Function<C, Boolean> commandPermissionMapper;
|
private final BiFunction<@NonNull C, @NonNull String, @NonNull Boolean> commandPermissionMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct a new Javacord command manager
|
* Construct a new Javacord command manager
|
||||||
|
|
@ -57,10 +63,11 @@ public class JavacordCommandManager<C> extends CommandManager<C> {
|
||||||
final @NonNull Function<@NonNull CommandTree<C>,
|
final @NonNull Function<@NonNull CommandTree<C>,
|
||||||
@NonNull CommandExecutionCoordinator<C>> commandExecutionCoordinator,
|
@NonNull CommandExecutionCoordinator<C>> commandExecutionCoordinator,
|
||||||
final @NonNull Function<@NonNull JavacordCommandSender, @NonNull C> commandSenderMapper,
|
final @NonNull Function<@NonNull JavacordCommandSender, @NonNull C> commandSenderMapper,
|
||||||
@NonNull
|
final @NonNull Function<@NonNull C,
|
||||||
final Function<@NonNull C, @NonNull JavacordCommandSender> backwardsCommandSenderMapper,
|
@NonNull JavacordCommandSender> backwardsCommandSenderMapper,
|
||||||
final @NonNull Function<@NonNull C, @NonNull String> commandPrefixMapper,
|
final @NonNull Function<@NonNull C, @NonNull String> commandPrefixMapper,
|
||||||
final @NonNull Function<@NonNull C, @NonNull Boolean> commandPermissionMapper)
|
final @Nullable BiFunction<@NonNull C,
|
||||||
|
@NonNull String, @NonNull Boolean> commandPermissionMapper)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
super(commandExecutionCoordinator, new JavacordRegistrationHandler<>());
|
super(commandExecutionCoordinator, new JavacordRegistrationHandler<>());
|
||||||
((JavacordRegistrationHandler<C>) this.getCommandRegistrationHandler()).initialize(this);
|
((JavacordRegistrationHandler<C>) this.getCommandRegistrationHandler()).initialize(this);
|
||||||
|
|
@ -78,7 +85,23 @@ public class JavacordCommandManager<C> extends CommandManager<C> {
|
||||||
if (permission.isEmpty()) {
|
if (permission.isEmpty()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return this.commandPermissionMapper.apply(sender);
|
|
||||||
|
if (this.commandPermissionMapper != null) {
|
||||||
|
return this.commandPermissionMapper.apply(sender, permission);
|
||||||
|
}
|
||||||
|
|
||||||
|
final JavacordCommandSender commandSender = this.backwardsCommandSenderMapper.apply(sender);
|
||||||
|
if (!(commandSender instanceof JavacordServerSender)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
final Optional<User> authorOptional = commandSender.getAuthor().asUser();
|
||||||
|
if (!authorOptional.isPresent()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
final JavacordServerSender serverSender = (JavacordServerSender) commandSender;
|
||||||
|
return serverSender.getServer().hasPermission(authorOptional.get(), PermissionType.valueOf(permission));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue