mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-20 21:29:08 +00:00
added command to sync roles for the whole server
added command to remove a role from the experience roles added leaderboard command added rank command fixed missfire configuration for cron jobs (they should not be executed) added ability to configure recovery for jobs added tracking of message count added join listener to automatically give the appropriate role for a joined user added parameter to join listener containing the userInAServer re-added command exception templates added method to create a status message (basically only a single message is returned and expected) added method to edit a single message in a channel to channel service fixed cases in which there are no embeds, but we still used the embed principle of sending messages (only text was send) added more functions to channel service to send messages with moved joined listeners to their separate transaction
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
package dev.sheldan.abstracto.experience;
|
||||
|
||||
public interface LeaderBoardEntryResult {
|
||||
Long getId();
|
||||
Long getUserInServerId();
|
||||
Long getExperience();
|
||||
Integer getLevel();
|
||||
Long getMessageCount();
|
||||
Integer getRank();
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package dev.sheldan.abstracto.experience.models;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class LeaderBoard {
|
||||
private List<LeaderBoardEntry> entries;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package dev.sheldan.abstracto.experience.models;
|
||||
|
||||
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class LeaderBoardEntry {
|
||||
private AUserExperience experience;
|
||||
private Integer rank;
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
package dev.sheldan.abstracto.experience.models.database;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import lombok.*;
|
||||
|
||||
@@ -24,6 +23,8 @@ public class AUserExperience {
|
||||
|
||||
private Long experience;
|
||||
|
||||
private Long messageCount;
|
||||
|
||||
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
|
||||
@JoinColumn(name = "level_id")
|
||||
private AExperienceLevel currentLevel;
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package dev.sheldan.abstracto.experience.models.templates;
|
||||
|
||||
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class LeaderBoardEntryModel {
|
||||
private AUserExperience experience;
|
||||
private Member member;
|
||||
private Integer rank;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package dev.sheldan.abstracto.experience.models.templates;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@SuperBuilder
|
||||
public class LeaderBoardModel extends UserInitiatedServerContext {
|
||||
private List<LeaderBoardEntryModel> userExperiences;
|
||||
private LeaderBoardEntryModel userExecuting;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package dev.sheldan.abstracto.experience.models.templates;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.context.UserInitiatedServerContext;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@SuperBuilder
|
||||
public class RankModel extends UserInitiatedServerContext {
|
||||
private LeaderBoardEntryModel rankUser;
|
||||
private Long experienceToNextLevel;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package dev.sheldan.abstracto.experience.models.templates;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class UserSyncStatusModel {
|
||||
private Integer currentCount;
|
||||
private Integer totalUserCount;
|
||||
}
|
||||
@@ -3,4 +3,5 @@ package dev.sheldan.abstracto.experience.service;
|
||||
public interface ExperienceLevelService {
|
||||
void createExperienceLevel(Integer level, Long experienceNeeded);
|
||||
Long calculateExperienceForLevel(Integer level);
|
||||
Long calculateExperienceToNextLevel(Integer level, Long currentExperience);
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@ package dev.sheldan.abstracto.experience.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.experience.models.database.AExperienceRole;
|
||||
|
||||
public interface ExperienceRoleService {
|
||||
void setRoleToLevel(ARole role, Integer level, AServer server);
|
||||
void unsetRole(ARole role, AServer server);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
package dev.sheldan.abstracto.experience.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.experience.models.LeaderBoard;
|
||||
import dev.sheldan.abstracto.experience.models.LeaderBoardEntry;
|
||||
import dev.sheldan.abstracto.experience.models.database.AExperienceLevel;
|
||||
import dev.sheldan.abstracto.experience.models.database.AExperienceRole;
|
||||
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
||||
@@ -17,4 +20,9 @@ public interface ExperienceTrackerService {
|
||||
void increaseExpForUser(AUserExperience userInAServer, Long experience, List<AExperienceLevel> levels);
|
||||
void handleExperienceGain(List<AServer> serverExp);
|
||||
void handleExperienceRoleForUser(AUserExperience userExperience, List<AExperienceRole> roles);
|
||||
void syncUserRoles(AServer server);
|
||||
void syncUserRolesWithFeedback(AServer server, AChannel channel);
|
||||
void syncForSingleUser(AUserExperience userExperience);
|
||||
LeaderBoard findLeaderBoardData(AServer server, Integer page);
|
||||
LeaderBoardEntry getRankOfUserInServer(AUserInAServer userInAServer);
|
||||
}
|
||||
|
||||
@@ -10,5 +10,7 @@ import java.util.List;
|
||||
public interface ExperienceRoleManagementService {
|
||||
void setLevelToRole(AExperienceLevel level, ARole role, AServer server);
|
||||
void unSetLevelInServer(AExperienceLevel level, AServer server);
|
||||
void unsetRole(AExperienceRole role);
|
||||
AExperienceRole getRoleInServer(ARole role, AServer server);
|
||||
List<AExperienceRole> getExperienceRoleForServer(AServer server);
|
||||
}
|
||||
|
||||
@@ -1,12 +1,21 @@
|
||||
package dev.sheldan.abstracto.experience.service.management;
|
||||
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.experience.LeaderBoardEntryResult;
|
||||
import dev.sheldan.abstracto.experience.models.LeaderBoardEntry;
|
||||
import dev.sheldan.abstracto.experience.models.database.AUserExperience;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface UserExperienceManagementService {
|
||||
void setExperienceTo(AUserExperience aUserInAServer, Long experience);
|
||||
AUserExperience findUserInServer(AUserInAServer aUserInAServer);
|
||||
AUserExperience createUserInServer(AUserInAServer aUserInAServer);
|
||||
void saveUser(AUserExperience userExperience);
|
||||
List<AUserExperience> loadAllUsers(AServer server);
|
||||
List<AUserExperience> findLeaderboardUsersPaginated(AServer server, Integer start, Integer end);
|
||||
LeaderBoardEntryResult getRankOfUserInServer(AUserExperience userExperience);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user