mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-01-23 20:30:21 +00:00
added command to check your own commands
This commit is contained in:
@@ -0,0 +1,73 @@
|
|||||||
|
package dev.sheldan.abstracto.moderation.commands;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
|
||||||
|
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
|
||||||
|
import dev.sheldan.abstracto.core.command.config.HelpInfo;
|
||||||
|
import dev.sheldan.abstracto.core.command.config.Parameter;
|
||||||
|
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||||
|
import dev.sheldan.abstracto.core.command.execution.CommandResult;
|
||||||
|
import dev.sheldan.abstracto.core.command.execution.ContextConverter;
|
||||||
|
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||||
|
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||||
|
import dev.sheldan.abstracto.core.service.FeatureFlagService;
|
||||||
|
import dev.sheldan.abstracto.moderation.config.ModerationModule;
|
||||||
|
import dev.sheldan.abstracto.moderation.config.features.ModerationFeatures;
|
||||||
|
import dev.sheldan.abstracto.moderation.config.features.WarningDecayFeature;
|
||||||
|
import dev.sheldan.abstracto.moderation.models.template.commands.MyWarningsModel;
|
||||||
|
import dev.sheldan.abstracto.moderation.service.management.WarnManagementService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class MyWarnings extends AbstractConditionableCommand {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ChannelService channelService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private WarnManagementService warnManagementService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private FeatureFlagService featureFlagService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private WarningDecayFeature warningDecayFeature;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommandResult execute(CommandContext commandContext) {
|
||||||
|
MyWarningsModel model = (MyWarningsModel) ContextConverter.fromCommandContext(commandContext, MyWarningsModel.class);
|
||||||
|
Long currentWarnCount = warnManagementService.getActiveWarnsForUser(commandContext.getUserInitiatedContext().getAUserInAServer());
|
||||||
|
model.setCurrentWarnCount(currentWarnCount);
|
||||||
|
Long totalWarnCount = warnManagementService.getTotalWarnsForUser(commandContext.getUserInitiatedContext().getAUserInAServer());
|
||||||
|
boolean userUsesDecay = featureFlagService.isFeatureEnabled(warningDecayFeature, commandContext.getUserInitiatedContext().getServer());
|
||||||
|
model.setServerUsesDecays(userUsesDecay);
|
||||||
|
model.setTotalWarnCount(totalWarnCount);
|
||||||
|
channelService.sendTemplateInChannel("myWarnings_response", model, commandContext.getChannel());
|
||||||
|
return CommandResult.fromSuccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommandConfiguration getConfiguration() {
|
||||||
|
List<Parameter> parameters = new ArrayList<>();
|
||||||
|
HelpInfo helpInfo = HelpInfo.builder().templated(true).build();
|
||||||
|
List<String> aliases = Arrays.asList("myWarns");
|
||||||
|
return CommandConfiguration.builder()
|
||||||
|
.name("myWarnings")
|
||||||
|
.module(ModerationModule.MODERATION)
|
||||||
|
.templated(true)
|
||||||
|
.causesReaction(true)
|
||||||
|
.aliases(aliases)
|
||||||
|
.parameters(parameters)
|
||||||
|
.help(helpInfo)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FeatureEnum getFeature() {
|
||||||
|
return ModerationFeatures.WARNING;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package dev.sheldan.abstracto.moderation.repository;
|
package dev.sheldan.abstracto.moderation.repository;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
import org.springframework.data.jpa.repository.QueryHints;
|
import org.springframework.data.jpa.repository.QueryHints;
|
||||||
@@ -14,4 +15,10 @@ import java.util.List;
|
|||||||
public interface WarnRepository extends JpaRepository<Warning, Long> {
|
public interface WarnRepository extends JpaRepository<Warning, Long> {
|
||||||
@QueryHints(@QueryHint(name = org.hibernate.annotations.QueryHints.CACHEABLE, value = "true"))
|
@QueryHints(@QueryHint(name = org.hibernate.annotations.QueryHints.CACHEABLE, value = "true"))
|
||||||
List<Warning> findAllByWarnedUser_ServerReferenceAndDecayedFalseAndWarnDateLessThan(AServer server, Instant cutOffDate);
|
List<Warning> findAllByWarnedUser_ServerReferenceAndDecayedFalseAndWarnDateLessThan(AServer server, Instant cutOffDate);
|
||||||
|
|
||||||
|
@QueryHints(@QueryHint(name = org.hibernate.annotations.QueryHints.CACHEABLE, value = "true"))
|
||||||
|
Long countByWarnedUser(AUserInAServer aUserInAServer);
|
||||||
|
|
||||||
|
@QueryHints(@QueryHint(name = org.hibernate.annotations.QueryHints.CACHEABLE, value = "true"))
|
||||||
|
Long countByWarnedUserAndDecayedFalse(AUserInAServer aUserInAServer);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,4 +33,16 @@ public class WarnManagementServiceBean implements WarnManagementService {
|
|||||||
public List<Warning> getActiveWarningsInServerOlderThan(AServer server, Instant date) {
|
public List<Warning> getActiveWarningsInServerOlderThan(AServer server, Instant date) {
|
||||||
return warnRepository.findAllByWarnedUser_ServerReferenceAndDecayedFalseAndWarnDateLessThan(server, date);
|
return warnRepository.findAllByWarnedUser_ServerReferenceAndDecayedFalseAndWarnDateLessThan(server, date);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long getTotalWarnsForUser(AUserInAServer aUserInAServer) {
|
||||||
|
return warnRepository.countByWarnedUser(aUserInAServer);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long getActiveWarnsForUser(AUserInAServer aUserInAServer) {
|
||||||
|
return warnRepository.countByWarnedUserAndDecayedFalse(aUserInAServer);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"author": {
|
||||||
|
"name": "${member.effectiveName}",
|
||||||
|
"avatar": "${member.user.effectiveAvatarUrl}"
|
||||||
|
},
|
||||||
|
"color" : {
|
||||||
|
"r": 200,
|
||||||
|
"g": 0,
|
||||||
|
"b": 255
|
||||||
|
}
|
||||||
|
<#assign userMention>${member.effectiveName}</#assign>
|
||||||
|
<#if serverUsesDecays>
|
||||||
|
,"description" :"<#include "myWarnings_with_decay_embed_description">"
|
||||||
|
<#else>
|
||||||
|
,"description" :"<#include "myWarnings_embed_description">"
|
||||||
|
</#if>
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package dev.sheldan.abstracto.moderation.models.template.commands;
|
||||||
|
|
||||||
|
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@SuperBuilder
|
||||||
|
public class MyWarningsModel extends UserInitiatedServerContext {
|
||||||
|
private Boolean serverUsesDecays;
|
||||||
|
private Long totalWarnCount;
|
||||||
|
private Long currentWarnCount;
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package dev.sheldan.abstracto.moderation.service.management;
|
package dev.sheldan.abstracto.moderation.service.management;
|
||||||
|
|
||||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||||
|
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||||
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
import dev.sheldan.abstracto.moderation.models.database.Warning;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
|
|
||||||
@@ -10,4 +11,6 @@ import java.util.List;
|
|||||||
public interface WarnManagementService {
|
public interface WarnManagementService {
|
||||||
Warning createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason);
|
Warning createWarning(AUserInAServer warnedAUser, AUserInAServer warningAUser, String reason);
|
||||||
List<Warning> getActiveWarningsInServerOlderThan(AServer server, Instant date);
|
List<Warning> getActiveWarningsInServerOlderThan(AServer server, Instant date);
|
||||||
|
Long getTotalWarnsForUser(AUserInAServer aUserInAServer);
|
||||||
|
Long getActiveWarnsForUser(AUserInAServer aUserInAServer);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
Shows your warnings.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Shows your warnings on this server.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
myWarnings
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
${userMention} has currently ${totalWarnCount} warnings in total.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
${userMention} has current ${currentWarnCount} Warnings and ${totalWarnCount} warnings in total.
|
||||||
Reference in New Issue
Block a user