mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-12 11:17:58 +00:00
[AB-124] adding admin mode
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user