mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-22 05:51:26 +00:00
[AB-308] adding a separate type for assignable role places to enable booster only places
adding more detailed logging to assignable roles adding some fall through logic to the banned listener to always log at least the basic information refactoring some command structure for showing configuration, so the command actually executes the message response fixing potential exception case for starboard updates causing the message ID to not be persisted
This commit is contained in:
@@ -0,0 +1,15 @@
|
||||
package dev.sheldan.abstracto.assignableroles.exception;
|
||||
|
||||
import dev.sheldan.abstracto.core.exception.AbstractoTemplatableException;
|
||||
|
||||
public class BoosterAssignableRolePlaceMemberNotBoostingException extends AbstractoTemplatableException {
|
||||
@Override
|
||||
public String getTemplateName() {
|
||||
return "assignable_role_booster_place_member_not_boosting_exception";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getTemplateModel() {
|
||||
return new Object();
|
||||
}
|
||||
}
|
||||
@@ -85,4 +85,8 @@ public class AssignableRolePlace implements Serializable {
|
||||
@Column(name = "updated", insertable = false, updatable = false)
|
||||
private Instant updated;
|
||||
|
||||
@Enumerated(EnumType.STRING)
|
||||
@Column(name = "type")
|
||||
private AssignableRolePlaceType type;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package dev.sheldan.abstracto.assignableroles.model.database;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandParameterKey;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
public enum AssignableRolePlaceType implements CommandParameterKey {
|
||||
DEFAULT, BOOSTER
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package dev.sheldan.abstracto.assignableroles.model.template;
|
||||
|
||||
import dev.sheldan.abstracto.assignableroles.model.database.AssignableRolePlace;
|
||||
import dev.sheldan.abstracto.assignableroles.model.database.AssignableRolePlaceType;
|
||||
import dev.sheldan.abstracto.core.models.template.display.ChannelDisplay;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
@@ -19,6 +20,7 @@ public class AssignableRolePlaceConfig {
|
||||
private String placeText;
|
||||
private ChannelDisplay channelDisplay;
|
||||
private Boolean uniqueRoles;
|
||||
private AssignableRolePlaceType type;
|
||||
/**
|
||||
* The {@link AssignableRolePlaceConfig roles} which are contained in this {@link AssignableRolePlace}
|
||||
*/
|
||||
|
||||
@@ -2,17 +2,21 @@ package dev.sheldan.abstracto.assignableroles.service;
|
||||
|
||||
import dev.sheldan.abstracto.assignableroles.config.AssignableRolePlaceParameterKey;
|
||||
import dev.sheldan.abstracto.assignableroles.model.database.AssignableRolePlace;
|
||||
import dev.sheldan.abstracto.assignableroles.model.database.AssignableRolePlaceType;
|
||||
import dev.sheldan.abstracto.assignableroles.model.template.AssignablePlaceOverview;
|
||||
import dev.sheldan.abstracto.assignableroles.model.template.AssignableRolePlaceConfig;
|
||||
import dev.sheldan.abstracto.core.models.FullEmote;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.Role;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public interface AssignableRolePlaceService {
|
||||
void createAssignableRolePlace(String name, AChannel channel, String text);
|
||||
void createAssignableRolePlace(String name, AChannel channel, String text, AssignableRolePlaceType type);
|
||||
|
||||
CompletableFuture<Void> addRoleToAssignableRolePlace(AServer server, String placeName, Role role, FullEmote emote, String description);
|
||||
|
||||
@@ -42,7 +46,7 @@ public interface AssignableRolePlaceService {
|
||||
|
||||
void multipleAssignableRolePlace(AssignableRolePlace place);
|
||||
|
||||
CompletableFuture<Void> showAssignablePlaceConfig(AServer server, String name, TextChannel channel);
|
||||
AssignableRolePlaceConfig getAssignableRolePlaceConfig(Guild guild, String name);
|
||||
|
||||
CompletableFuture<Void> moveAssignableRolePlace(AServer server, String name, TextChannel newChannel);
|
||||
|
||||
@@ -52,5 +56,5 @@ public interface AssignableRolePlaceService {
|
||||
|
||||
CompletableFuture<Void> changeConfiguration(AServer server, String name, AssignableRolePlaceParameterKey keyToChange, String newValue);
|
||||
|
||||
CompletableFuture<Void> showAllAssignableRolePlaces(AServer server, TextChannel channel);
|
||||
AssignablePlaceOverview getAssignableRolePlaceOverview(Guild guild);
|
||||
}
|
||||
|
||||
@@ -2,11 +2,13 @@ package dev.sheldan.abstracto.assignableroles.service;
|
||||
|
||||
import dev.sheldan.abstracto.assignableroles.model.database.AssignableRole;
|
||||
import dev.sheldan.abstracto.assignableroles.model.database.AssignableRolePlace;
|
||||
import dev.sheldan.abstracto.assignableroles.model.database.AssignedRoleUser;
|
||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.Role;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
/**
|
||||
@@ -67,4 +69,6 @@ public interface AssignableRoleService {
|
||||
AssignableRole getAssignableRoleInPlace(AssignableRolePlace place, ARole role);
|
||||
AssignableRole getAssignableRoleInPlace(AssignableRolePlace place, Long roleId);
|
||||
|
||||
void removeAssignableRolesFromAssignableRoleUser(List<AssignableRole> roles, AssignedRoleUser roleUser);
|
||||
|
||||
}
|
||||
|
||||
@@ -2,14 +2,19 @@ package dev.sheldan.abstracto.assignableroles.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.assignableroles.model.database.AssignableRole;
|
||||
import dev.sheldan.abstracto.assignableroles.model.database.AssignableRolePlace;
|
||||
import dev.sheldan.abstracto.assignableroles.model.database.AssignableRolePlaceType;
|
||||
import dev.sheldan.abstracto.assignableroles.model.database.AssignedRoleUser;
|
||||
import dev.sheldan.abstracto.core.models.FullEmote;
|
||||
import dev.sheldan.abstracto.core.models.database.ComponentPayload;
|
||||
import net.dv8tion.jda.api.entities.Role;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface AssignableRoleManagementService {
|
||||
AssignableRole addRoleToPlace(FullEmote emote, Role role, String description, AssignableRolePlace place, ComponentPayload componentPayload);
|
||||
|
||||
AssignableRole getByAssignableRoleId(Long assignableRoleId);
|
||||
void deleteAssignableRole(AssignableRole assignableRole);
|
||||
List<AssignableRole> getAssignableRolesFromAssignableUserWithPlaceType(AssignedRoleUser user, AssignableRolePlaceType type);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package dev.sheldan.abstracto.assignableroles.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.assignableroles.model.database.AssignableRolePlace;
|
||||
import dev.sheldan.abstracto.assignableroles.model.database.AssignableRolePlaceType;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
|
||||
@@ -9,7 +10,7 @@ import java.util.Optional;
|
||||
|
||||
public interface AssignableRolePlaceManagementService {
|
||||
|
||||
AssignableRolePlace createPlace(String name, AChannel channel, String text);
|
||||
AssignableRolePlace createPlace(String name, AChannel channel, String text, AssignableRolePlaceType type);
|
||||
|
||||
boolean doesPlaceExist(AServer server, String name);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user