mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-03-27 14:23:56 +00:00
[AB-302] refactoring assignable roles to use buttons instead of reactions
moved button related services to component service instead of message service adding component type to component payload renamed async role service methods ignoring bot reactions in starboard fixing rank not showing correct experience to next level for other members
This commit is contained in:
@@ -4,12 +4,12 @@ import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class ConditionContextInstance {
|
||||
private HashMap<String, Object> parameters;
|
||||
private Map<String, Object> parameters;
|
||||
private String conditionName;
|
||||
}
|
||||
|
||||
@@ -24,4 +24,5 @@ public class FullEmote implements Serializable {
|
||||
return fakeEmote.getEmoteId().toString();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -29,6 +29,11 @@ public class ComponentPayload {
|
||||
@Column(name = "payload")
|
||||
private String payload;
|
||||
|
||||
@Getter
|
||||
@Enumerated(EnumType.STRING)
|
||||
@Column(name = "type")
|
||||
private ComponentType type;
|
||||
|
||||
@Column(name = "payload_type", length = 255)
|
||||
private String payloadType;
|
||||
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
|
||||
public enum ComponentType {
|
||||
BUTTON, SELECTION
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package dev.sheldan.abstracto.core.models.template.display;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class ChannelDisplay {
|
||||
private String name;
|
||||
private String channelMention;
|
||||
|
||||
public static ChannelDisplay fromChannel(TextChannel channel) {
|
||||
if(channel == null) {
|
||||
return null;
|
||||
}
|
||||
return ChannelDisplay
|
||||
.builder()
|
||||
.name(channel.getName())
|
||||
.channelMention(channel.getAsMention())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package dev.sheldan.abstracto.core.models.template.display;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.dv8tion.jda.api.entities.Role;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class RoleDisplay {
|
||||
private String roleMention;
|
||||
private Long roleId;
|
||||
|
||||
public static RoleDisplay fromRole(Role role) {
|
||||
return RoleDisplay
|
||||
.builder()
|
||||
.roleId(role.getIdLong())
|
||||
.roleMention(role.getAsMention())
|
||||
.build();
|
||||
}
|
||||
|
||||
public static RoleDisplay fromARole(ARole role) {
|
||||
return RoleDisplay
|
||||
.builder()
|
||||
.roleId(role.getId())
|
||||
.roleMention(role.getAsMention())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.ComponentPayload;
|
||||
import dev.sheldan.abstracto.core.models.template.button.ButtonPayload;
|
||||
|
||||
public interface ComponentPayloadService {
|
||||
ComponentPayload createButtonPayload(String componentId, ButtonPayload payload, String origin, AServer server);
|
||||
ComponentPayload createSelectionPayload(String componentId, ButtonPayload payload, String origin, AServer server);
|
||||
}
|
||||
@@ -1,6 +1,25 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
import net.dv8tion.jda.api.interactions.components.ActionRow;
|
||||
import net.dv8tion.jda.api.interactions.components.ButtonStyle;
|
||||
import net.dv8tion.jda.api.interactions.components.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public interface ComponentService {
|
||||
|
||||
Integer MAX_BUTTONS_PER_ROW = Component.Type.BUTTON.getMaxPerRow();
|
||||
String generateComponentId(Long serverId);
|
||||
String generateComponentId();
|
||||
CompletableFuture<Message> addButtonToMessage(Long messageId, TextChannel textChannel, String buttonId, String description, String emoteMarkdown, ButtonStyle style);
|
||||
CompletableFuture<Void> clearButtons(Message message);
|
||||
CompletableFuture<Void> disableAllButtons(Message message);
|
||||
CompletableFuture<Void> enableAllButtons(Message message);
|
||||
CompletableFuture<Void> removeComponentWithId(Message message, String componentId);
|
||||
CompletableFuture<Void> removeComponentWithId(Message message, String componentId, Boolean rearrange);
|
||||
List<ActionRow> splitIntoActionRowsMax(List<Component> components);
|
||||
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.MessageChannel;
|
||||
import net.dv8tion.jda.api.entities.MessageEmbed;
|
||||
import net.dv8tion.jda.api.entities.User;
|
||||
import net.dv8tion.jda.api.interactions.components.ActionRow;
|
||||
import net.dv8tion.jda.api.requests.restaction.AuditableRestAction;
|
||||
import net.dv8tion.jda.api.requests.restaction.MessageAction;
|
||||
|
||||
@@ -40,5 +41,6 @@ public interface MessageService {
|
||||
MessageAction editMessage(Message message, String text, MessageEmbed messageEmbed);
|
||||
AuditableRestAction<Void> deleteMessageWithAction(Message message);
|
||||
CompletableFuture<Void> deleteMessage(Message message);
|
||||
CompletableFuture<Void> clearButtons(Message message);
|
||||
CompletableFuture<Void> editMessageWithActionRows(Message message, List<ActionRow> rows);
|
||||
CompletableFuture<Message> editMessageWithActionRowsMessage(Message message, List<ActionRow> rows);
|
||||
}
|
||||
|
||||
@@ -12,18 +12,20 @@ import java.util.Optional;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public interface RoleService {
|
||||
void addRoleToUser(AUserInAServer aUserInAServer, ARole role);
|
||||
CompletableFuture<Void> addRoleToUserFuture(AUserInAServer aUserInAServer, ARole role);
|
||||
CompletableFuture<Void> addRoleToMemberFuture(Member member, Long roleId);
|
||||
void addRoleToMember(AUserInAServer aUserInAServer, ARole role);
|
||||
CompletableFuture<Void> addRoleToUserAsync(AUserInAServer aUserInAServer, ARole role);
|
||||
CompletableFuture<Void> addRoleToMemberAsync(Member member, Long roleId);
|
||||
CompletableFuture<Void> addRoleToMemberAsync(Member member, Role role);
|
||||
void addRoleToMember(Member member, ARole role);
|
||||
CompletableFuture<Void> addRoleToMemberFuture(Member member, ARole role);
|
||||
CompletableFuture<Void> addRoleToMemberAsync(Member member, ARole role);
|
||||
void removeRoleFromMember(Member member, ARole role);
|
||||
CompletableFuture<Void> removeRoleFromMemberAsync(Member member, ARole role);
|
||||
CompletableFuture<Void> removeRoleFromMemberAsync(Member member, Long roleId);
|
||||
CompletableFuture<Void> addRoleToUser(Guild guild, Long userId, Role roleById);
|
||||
CompletableFuture<Void> removeRoleFromUser(Guild guild, Long userId, Role roleById);
|
||||
CompletableFuture<Void> addRoleToMemberAsync(Guild guild, Long userId, Role roleById);
|
||||
CompletableFuture<Void> removeRoleFromUserAsync(Guild guild, Long userId, Role roleById);
|
||||
void removeRoleFromUser(AUserInAServer aUserInAServer, ARole role);
|
||||
CompletableFuture<Void> removeRoleFromUserFuture(AUserInAServer aUserInAServer, ARole role);
|
||||
CompletableFuture<Void> removeRoleFromUserAsync(AUserInAServer aUserInAServer, ARole role);
|
||||
CompletableFuture<Void> removeRoleFromUserAsync(Member member, Role role);
|
||||
void markDeleted(Role role, AServer server);
|
||||
void markDeleted(Long id, AServer server);
|
||||
Role getRoleFromGuild(ARole role);
|
||||
@@ -35,6 +37,7 @@ public interface RoleService {
|
||||
boolean memberHasRole(Member member, Long roleId);
|
||||
boolean isRoleInServer(ARole role);
|
||||
boolean canBotInteractWithRole(ARole role);
|
||||
boolean canBotInteractWithRole(Role role);
|
||||
ARole getFakeRoleFromRole(Role role);
|
||||
ARole getFakeRoleFromId(Long roleId);
|
||||
}
|
||||
|
||||
@@ -2,15 +2,17 @@ package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.ComponentPayload;
|
||||
import dev.sheldan.abstracto.core.models.database.ComponentType;
|
||||
import dev.sheldan.abstracto.core.models.template.button.ButtonConfigModel;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public interface ComponentPayloadManagementService {
|
||||
ComponentPayload createPayload(String id, String payload, Class payloadType, String buttonOrigin, AServer server);
|
||||
ComponentPayload createPayload(String id, String payload, Class payloadType, String buttonOrigin, AServer server, ComponentType type);
|
||||
ComponentPayload createPayload(ButtonConfigModel buttonConfigModel, AServer server);
|
||||
Optional<ComponentPayload> findPayload(String id);
|
||||
List<ComponentPayload> findPayloadsOfOriginInServer(String buttonOrigin, AServer server);
|
||||
void deletePayload(String id);
|
||||
void deletePayload(ComponentPayload payload);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.templating.model;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.ComponentType;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@@ -53,6 +54,7 @@ public class MessageToSend {
|
||||
public static class ComponentConfig {
|
||||
private String payload;
|
||||
private String componentOrigin;
|
||||
private ComponentType componentType;
|
||||
private Class payloadType;
|
||||
private Boolean persistCallback;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user