Skip to content

Commit

Permalink
[AB-xxx] enable show avatar/userinfo for user installable commands
Browse files Browse the repository at this point in the history
  • Loading branch information
Sheldan committed Apr 12, 2024
1 parent f720a63 commit eb2a5f3
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ public CommandConfiguration getConfiguration() {
.module(UtilityModuleDefinition.UTILITY)
.templated(true)
.async(true)
.userInstallable(true)
.supportsEmbedException(true)
.causesReaction(false)
.parameters(parameters)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import dev.sheldan.abstracto.core.models.template.display.RoleDisplay;
import dev.sheldan.abstracto.core.service.ChannelService;
import dev.sheldan.abstracto.core.service.MemberService;
import dev.sheldan.abstracto.core.utils.ContextUtils;
import dev.sheldan.abstracto.core.utils.FutureUtils;
import dev.sheldan.abstracto.utility.config.UtilityFeatureDefinition;
import dev.sheldan.abstracto.utility.config.UtilitySlashCommandNames;
Expand Down Expand Up @@ -71,12 +72,12 @@ public CompletableFuture<CommandResult> executeAsync(CommandContext commandConte
if(!memberToShow.hasTimeJoined()) {
log.info("Force reloading member {} in guild {} for user info.", memberToShow.getId(), memberToShow.getGuild().getId());
return memberService.forceReloadMember(memberToShow).thenCompose(member -> {
fillUserInfoModel(model, member);
fillUserInfoModel(model, member, false);
return self.sendResponse(commandContext.getChannel(), model)
.thenApply(aVoid -> CommandResult.fromIgnored());
});
} else {
fillUserInfoModel(model, memberToShow);
fillUserInfoModel(model, memberToShow, false);
return self.sendResponse(commandContext.getChannel(), model)
.thenApply(aVoid -> CommandResult.fromIgnored());
}
Expand Down Expand Up @@ -106,33 +107,36 @@ public CompletableFuture<CommandResult> executeSlash(SlashCommandInteractionEven
UserInfoModel model = UserInfoModel
.builder()
.build();
boolean userCommand = ContextUtils.isUserCommand(event.getInteraction());
if(!memberToShow.hasTimeJoined()) {
log.info("Force reloading member {} in guild {} for user info.", memberToShow.getId(), memberToShow.getGuild().getId());
return memberService.forceReloadMember(memberToShow).thenCompose(member -> {
fillUserInfoModel(model, member);
fillUserInfoModel(model, member, userCommand);
return self.sendResponse(event, model)
.thenApply(aVoid -> CommandResult.fromIgnored());
});
} else {
fillUserInfoModel(model, memberToShow);
fillUserInfoModel(model, memberToShow, userCommand);
return self.sendResponse(event, model)
.thenApply(aVoid -> CommandResult.fromIgnored());
}
}

private void fillUserInfoModel(UserInfoModel model, Member member) {
private void fillUserInfoModel(UserInfoModel model, Member member, boolean userCommand) {
model.setCreationDate(member.getTimeCreated().toInstant());
model.setJoinDate(member.getTimeJoined().toInstant());
model.setId(member.getIdLong());
model.setMemberDisplay(MemberNameDisplay.fromMember(member));
model.setOnlineStatus(member.getOnlineStatus().getKey());
member.getRoles().forEach(role -> model.getRoles().add(RoleDisplay.fromRole(role)));
member.getActivities().forEach(activity -> model.getActivities().add(activity.getType().name()));
Optional<Activity> customStatusOptional = member.getActivities().stream().filter(activity -> activity.getType().equals(Activity.ActivityType.CUSTOM_STATUS)).findFirst();
customStatusOptional.ifPresent(activity -> {
model.setCustomStatus(activity.getName());
model.setCustomEmoji(activity.getEmoji() != null ? activity.getEmoji().getFormatted() : null);
});
if(!userCommand) {
model.setOnlineStatus(member.getOnlineStatus().getKey());
member.getRoles().forEach(role -> model.getRoles().add(RoleDisplay.fromRole(role)));
member.getActivities().forEach(activity -> model.getActivities().add(activity.getType().name()));
Optional<Activity> customStatusOptional = member.getActivities().stream().filter(activity -> activity.getType().equals(Activity.ActivityType.CUSTOM_STATUS)).findFirst();
customStatusOptional.ifPresent(activity -> {
model.setCustomStatus(activity.getName());
model.setCustomEmoji(activity.getEmoji() != null ? activity.getEmoji().getFormatted() : null);
});
}
}

@Override
Expand Down Expand Up @@ -164,6 +168,7 @@ public CommandConfiguration getConfiguration() {
.module(UtilityModuleDefinition.UTILITY)
.templated(true)
.async(true)
.userInstallable(true)
.supportsEmbedException(true)
.causesReaction(false)
.parameters(parameters)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,7 @@
package dev.sheldan.abstracto.core.utils;

import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
import dev.sheldan.abstracto.core.models.GuildChannelMember;
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
import dev.sheldan.abstracto.core.service.MemberService;
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.entities.channel.middleman.GuildMessageChannel;
import net.dv8tion.jda.api.interactions.Interaction;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

@Slf4j
public class ContextUtils {
Expand All @@ -26,4 +13,8 @@ public static boolean isGuildAware(Interaction interaction) {
public static boolean isNotGuildAware(Interaction interaction) {
return interaction.getGuild() == null || interaction.getGuild().isDetached();
}

public static boolean isUserCommand(Interaction interaction) {
return interaction.getGuild() != null && interaction.getGuild().isDetached();
}
}

0 comments on commit eb2a5f3

Please sign in to comment.