[AB-124] adding admin mode

This commit is contained in:
Sheldan
2021-03-10 01:10:27 +01:00
parent e780b0e75c
commit e2da800d84
12 changed files with 183 additions and 3 deletions

View File

@@ -29,10 +29,13 @@ public abstract class AbstractConditionableCommand implements ConditionalCommand
@Autowired
private FeatureModeCondition featureModeCondition;
@Autowired
private AdminModeCondition adminModeCondition;
@Override
public List<CommandCondition> getConditions() {
return new ArrayList<>(Arrays.asList(featureEnabledCondition, commandDisabledCondition, commandDisallowedCondition, featureModeCondition));
return new ArrayList<>(Arrays.asList(adminModeCondition, featureEnabledCondition, commandDisabledCondition, commandDisallowedCondition, featureModeCondition));
}
protected void checkParameters(CommandContext context) {

View File

@@ -0,0 +1,31 @@
package dev.sheldan.abstracto.core.command.condition;
import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.core.command.condition.detail.AdminModeDetail;
import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.core.service.ServerService;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.Permission;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class AdminModeCondition implements CommandCondition {
@Autowired
private ServerService service;
@Override
public ConditionResult shouldExecute(CommandContext context, Command command) {
boolean adminModeActive = service.adminModeActive(context.getGuild());
if(adminModeActive){
if(context.getAuthor().hasPermission(Permission.ADMINISTRATOR)) {
return ConditionResult.builder().result(true).build();
} else {
return ConditionResult.builder().result(false).conditionDetail(new AdminModeDetail()).build();
}
}
return ConditionResult.builder().result(true).build();
}
}

View File

@@ -0,0 +1,15 @@
package dev.sheldan.abstracto.core.command.condition.detail;
import dev.sheldan.abstracto.core.command.condition.ConditionDetail;
public class AdminModeDetail implements ConditionDetail {
@Override
public String getTemplateName() {
return "admin_mode_enabled_condition";
}
@Override
public Object getTemplateModel() {
return new Object();
}
}

View File

@@ -28,6 +28,10 @@ public class AServer implements SnowFlake, Serializable {
@Column(name = "updated")
private Instant updated;
@Setter
@Column(name = "admin_mode")
private Boolean adminMode;
@Transient
private boolean fake;

View File

@@ -0,0 +1,14 @@
package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.models.database.AServer;
import net.dv8tion.jda.api.entities.Guild;
public interface ServerService {
boolean adminModeActive(Long id);
boolean adminModeActive(Guild guild);
void setAdminModeTo(Long id, Boolean newState);
void setAdminModeTo(Guild guild, Boolean newState);
void setAdminModeTo(AServer server, Boolean newState);
void activateAdminMode(Long id);
void deactivateAdminMode(Long id);
}