Essentials/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/InteractionMemberImpl.java

73 lines
2.0 KiB
Java

package net.essentialsx.discord.interactions;
import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.PrivateChannel;
import net.essentialsx.api.v2.services.discord.InteractionMember;
import net.essentialsx.discord.util.DiscordUtil;
import java.util.List;
import java.util.concurrent.CompletableFuture;
public class InteractionMemberImpl implements InteractionMember {
private final Member member;
public InteractionMemberImpl(Member member) {
this.member = member;
}
@Override
public String getName() {
return member.getUser().getName();
}
@Override
public String getDiscriminator() {
return member.getUser().getDiscriminator();
}
@Override
public String getEffectiveName() {
return member.getEffectiveName();
}
@Override
public String getNickname() {
return member.getNickname();
}
@Override
public String getId() {
return member.getId();
}
@Override
public boolean isAdmin() {
return member.hasPermission(Permission.ADMINISTRATOR);
}
@Override
public boolean hasRoles(List<String> roleDefinitions) {
return DiscordUtil.hasRoles(member, roleDefinitions);
}
public Member getJdaObject() {
return member;
}
@Override
public CompletableFuture<Boolean> sendPrivateMessage(String content) {
final CompletableFuture<Boolean> future = new CompletableFuture<>();
final CompletableFuture<PrivateChannel> privateFuture = member.getUser().openPrivateChannel().submit();
privateFuture.thenCompose(privateChannel -> privateChannel.sendMessage(content).submit())
.whenComplete((m, error) -> {
if (error != null) {
future.complete(false);
return;
}
future.complete(true);
});
return future;
}
}