mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-18 04:50:38 +00:00
[AB-74] adding more information to output of transfer credits command
This commit is contained in:
@@ -11,10 +11,14 @@ import dev.sheldan.abstracto.core.interaction.InteractionService;
|
|||||||
import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig;
|
import dev.sheldan.abstracto.core.interaction.slash.SlashCommandConfig;
|
||||||
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
import dev.sheldan.abstracto.core.interaction.slash.parameter.SlashCommandParameterService;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
|
import dev.sheldan.abstracto.core.models.template.display.MemberDisplay;
|
||||||
|
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||||
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
import dev.sheldan.abstracto.core.service.management.UserInServerManagementService;
|
||||||
|
import dev.sheldan.abstracto.core.utils.FutureUtils;
|
||||||
import dev.sheldan.abstracto.entertainment.config.EntertainmentFeatureDefinition;
|
import dev.sheldan.abstracto.entertainment.config.EntertainmentFeatureDefinition;
|
||||||
import dev.sheldan.abstracto.entertainment.config.EntertainmentModuleDefinition;
|
import dev.sheldan.abstracto.entertainment.config.EntertainmentModuleDefinition;
|
||||||
import dev.sheldan.abstracto.entertainment.config.EntertainmentSlashCommandNames;
|
import dev.sheldan.abstracto.entertainment.config.EntertainmentSlashCommandNames;
|
||||||
|
import dev.sheldan.abstracto.entertainment.model.command.TransferCreditsModel;
|
||||||
import dev.sheldan.abstracto.entertainment.service.EconomyService;
|
import dev.sheldan.abstracto.entertainment.service.EconomyService;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
|
||||||
@@ -44,15 +48,25 @@ public class TransferCredits extends AbstractConditionableCommand {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private EconomyService economyService;
|
private EconomyService economyService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ChannelService channelService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CommandResult execute(CommandContext commandContext) {
|
public CompletableFuture<CommandResult> executeAsync(CommandContext commandContext) {
|
||||||
List<Object> parameters = commandContext.getParameters().getParameters();
|
List<Object> parameters = commandContext.getParameters().getParameters();
|
||||||
Member targetMember = (Member) parameters.get(0);
|
Member targetMember = (Member) parameters.get(0);
|
||||||
Integer amount = (Integer) parameters.get(1);
|
Integer amount = (Integer) parameters.get(1);
|
||||||
AUserInAServer targetUser = userInServerManagementService.loadOrCreateUser(targetMember);
|
AUserInAServer targetUser = userInServerManagementService.loadOrCreateUser(targetMember);
|
||||||
AUserInAServer sourceUser = userInServerManagementService.loadOrCreateUser(commandContext.getAuthor());
|
AUserInAServer sourceUser = userInServerManagementService.loadOrCreateUser(commandContext.getAuthor());
|
||||||
economyService.transferCredits(sourceUser, targetUser, amount.longValue());
|
economyService.transferCredits(sourceUser, targetUser, amount.longValue());
|
||||||
return CommandResult.fromSuccess();
|
TransferCreditsModel responseModel = TransferCreditsModel
|
||||||
|
.builder()
|
||||||
|
.sourceMember(MemberDisplay.fromMember(commandContext.getAuthor()))
|
||||||
|
.targetMember(MemberDisplay.fromMember(targetMember))
|
||||||
|
.credits(amount)
|
||||||
|
.build();
|
||||||
|
return FutureUtils.toSingleFutureGeneric(channelService.sendEmbedTemplateInTextChannelList(TRANSFER_CREDITS_RESPONSE, responseModel, commandContext.getChannel()))
|
||||||
|
.thenApply(unused -> CommandResult.fromSuccess());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -61,8 +75,14 @@ public class TransferCredits extends AbstractConditionableCommand {
|
|||||||
Integer amount = slashCommandParameterService.getCommandOption(AMOUNT_PARAMETER, event, Integer.class);
|
Integer amount = slashCommandParameterService.getCommandOption(AMOUNT_PARAMETER, event, Integer.class);
|
||||||
AUserInAServer targetUser = userInServerManagementService.loadOrCreateUser(targetMember);
|
AUserInAServer targetUser = userInServerManagementService.loadOrCreateUser(targetMember);
|
||||||
AUserInAServer sourceUser = userInServerManagementService.loadOrCreateUser(event.getMember());
|
AUserInAServer sourceUser = userInServerManagementService.loadOrCreateUser(event.getMember());
|
||||||
|
TransferCreditsModel responseModel = TransferCreditsModel
|
||||||
|
.builder()
|
||||||
|
.sourceMember(MemberDisplay.fromMember(event.getMember()))
|
||||||
|
.targetMember(MemberDisplay.fromMember(targetMember))
|
||||||
|
.credits(amount)
|
||||||
|
.build();
|
||||||
economyService.transferCredits(sourceUser, targetUser, amount.longValue());
|
economyService.transferCredits(sourceUser, targetUser, amount.longValue());
|
||||||
return interactionService.replyEmbed(TRANSFER_CREDITS_RESPONSE, event)
|
return interactionService.replyEmbed(TRANSFER_CREDITS_RESPONSE, responseModel, event)
|
||||||
.thenApply(interactionHook -> CommandResult.fromSuccess());
|
.thenApply(interactionHook -> CommandResult.fromSuccess());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,7 +125,8 @@ public class TransferCredits extends AbstractConditionableCommand {
|
|||||||
.templated(true)
|
.templated(true)
|
||||||
.supportsEmbedException(true)
|
.supportsEmbedException(true)
|
||||||
.parameters(parameters)
|
.parameters(parameters)
|
||||||
.causesReaction(true)
|
.causesReaction(false)
|
||||||
|
.async(true)
|
||||||
.help(helpInfo)
|
.help(helpInfo)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package dev.sheldan.abstracto.entertainment.model.command;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.models.template.display.MemberDisplay;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
@Builder
|
||||||
|
@Getter
|
||||||
|
public class TransferCreditsModel {
|
||||||
|
private Integer credits;
|
||||||
|
private MemberDisplay sourceMember;
|
||||||
|
private MemberDisplay targetMember;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user