added warn and ban command

changed command context to be a member instead of user, commands are only supported within guilds
added custom exception templating for the error message
added error message in case the parameters for a command were too little
added support for templates on command help descriptions
added post execution to be executed to print exception messages
refactored command handling to be able to support exceptions
added user and userInServer management
This commit is contained in:
Sheldan
2020-03-18 18:21:06 +01:00
parent 167bbb0f8b
commit bd848d31d3
82 changed files with 913 additions and 151 deletions

View File

@@ -1,13 +1,12 @@
package dev.sheldan.abstracto.core.management;
import dev.sheldan.abstracto.core.models.AChannel;
import dev.sheldan.abstracto.core.models.AServer;
import dev.sheldan.abstracto.core.models.PostTarget;
import dev.sheldan.abstracto.core.models.*;
public interface ServerManagementService {
AServer createServer(Long id);
AServer loadServer(Long id);
void addChannelToServer(AServer server, AChannel channel);
AUserInAServer addUserToServer(AServer server, AUser user);
AChannel getPostTarget(Long serverId, String name);
AChannel getPostTarget(Long serverId, PostTarget target);
AChannel getPostTarget(AServer server, PostTarget target);

View File

@@ -0,0 +1,14 @@
package dev.sheldan.abstracto.core.management;
import dev.sheldan.abstracto.core.models.AServer;
import dev.sheldan.abstracto.core.models.AUser;
import dev.sheldan.abstracto.core.models.AUserInAServer;
import net.dv8tion.jda.api.entities.Member;
public interface UserManagementService {
AUserInAServer loadUser(Long userId, Long serverId);
AUserInAServer loadUser(AUser user, AServer server);
AUserInAServer loadUser(Member member);
AUserInAServer createUserInServer(Member member);
AUser createUser(Member member);
}

View File

@@ -11,17 +11,15 @@ import java.util.List;
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Getter
public class AServer implements SnowFlake {
@Id
@Getter @Setter
private Long id;
@Getter
private String name;
@OneToMany(fetch = FetchType.LAZY)
@Getter
@Builder.Default
private List<ARole> roles = new ArrayList<>();
@@ -30,10 +28,15 @@ public class AServer implements SnowFlake {
mappedBy = "server",
cascade = CascadeType.ALL,
orphanRemoval = true)
@Getter
@Builder.Default
private List<AChannel> channels = new ArrayList<>();
@OneToMany(
fetch = FetchType.LAZY,
mappedBy = "serverReference",
cascade = {CascadeType.PERSIST, CascadeType.MERGE})
private List<AUserInAServer> users;
}

View File

@@ -0,0 +1,24 @@
package dev.sheldan.abstracto.core.models;
import lombok.*;
import javax.persistence.*;
import java.util.List;
@Entity
@Table(name="users")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
public class AUser {
@Id
private Long id;
@OneToMany(
fetch = FetchType.LAZY,
mappedBy = "userReference",
cascade = {CascadeType.PERSIST, CascadeType.MERGE})
private List<AUserInAServer> servers;
}

View File

@@ -0,0 +1,22 @@
package dev.sheldan.abstracto.core.models;
import lombok.Builder;
import lombok.Getter;
import javax.persistence.*;
@Entity @Getter @Builder
public class AUserInAServer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long userInServerId;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "userReference")
private AUser userReference;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "serverReference")
private AServer serverReference;
}

View File

@@ -35,6 +35,7 @@ public class PostTarget {
public static String JOIN_LOG = "joinlog";
public static String LEAVE_LOG = "leavelog";
public static String WARN_LOG = "warnlog";
public static List<String> AVAILABLE_POST_TARGETS = Arrays.asList(JOIN_LOG, LEAVE_LOG);
public static List<String> AVAILABLE_POST_TARGETS = Arrays.asList(JOIN_LOG, LEAVE_LOG, WARN_LOG);
}

View File

@@ -4,4 +4,5 @@ import dev.sheldan.abstracto.core.models.PostTarget;
public interface PostTargetService {
void sendTextInPostTarget(String text, PostTarget target);
void sendTextInPostTarget(String text, String postTargetName, Long serverId);
}