mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-03-27 14:23:56 +00:00
added Arole to command received handler in order to handle it
restructured channel service calls a little bit moved dm sending to message service fixed log level configuration added full user dto, to be used as a combination of a AUserInServer and Member, for operations which need both, to avoid converting and reloading the user added mute command and mute role command added mute table added mute role table added job to automatically unmute people at the given time period restructured warn service removed simple message log for warnings added method to templating to support formatting instants
This commit is contained in:
@@ -15,7 +15,9 @@ import dev.sheldan.abstracto.core.command.execution.UnParsedCommandParameter;
|
||||
import dev.sheldan.abstracto.core.Constants;
|
||||
import dev.sheldan.abstracto.core.command.service.management.CommandManagementService;
|
||||
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.RoleManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
|
||||
import dev.sheldan.abstracto.core.service.management.UserManagementService;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
@@ -70,6 +72,9 @@ public class CommandReceivedHandler extends ListenerAdapter {
|
||||
@Autowired
|
||||
private CommandManagementService commandManagementService;
|
||||
|
||||
@Autowired
|
||||
private RoleManagementService roleManagementService;
|
||||
|
||||
@Override
|
||||
@Async
|
||||
@Transactional
|
||||
@@ -188,6 +193,8 @@ public class CommandReceivedHandler extends ListenerAdapter {
|
||||
} else {
|
||||
parsedParameters.add(value);
|
||||
}
|
||||
} else if(param.getType().equals(ARole.class)) {
|
||||
parsedParameters.add(roleManagementService.findRole(Long.parseLong(value)));
|
||||
} else if(param.getType().equals(Boolean.class)) {
|
||||
parsedParameters.add(Boolean.valueOf(value));
|
||||
} else if (param.getType().equals(Duration.class)) {
|
||||
|
||||
@@ -6,6 +6,7 @@ import dev.sheldan.abstracto.core.models.GuildChannelMember;
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.database.AUser;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.JDA;
|
||||
import net.dv8tion.jda.api.JDABuilder;
|
||||
@@ -71,6 +72,11 @@ public class BotServiceBean implements BotService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Member getMemberInServer(AUserInAServer aUserInAServer) {
|
||||
return getMemberInServer(aUserInAServer.getServerReference().getId(), aUserInAServer.getUserReference().getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Member getMemberInServer(AServer server, AUser member) {
|
||||
return getMemberInServer(server.getId(), member.getId());
|
||||
|
||||
@@ -3,6 +3,7 @@ package dev.sheldan.abstracto.core.service;
|
||||
import dev.sheldan.abstracto.core.exception.AbstractoRunTimeException;
|
||||
import dev.sheldan.abstracto.core.exception.ChannelException;
|
||||
import dev.sheldan.abstracto.core.exception.GuildException;
|
||||
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
|
||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -27,18 +28,26 @@ public class ChannelServiceBean implements ChannelService {
|
||||
@Autowired
|
||||
private BotService botService;
|
||||
|
||||
@Autowired
|
||||
private ChannelManagementService channelManagementService;
|
||||
|
||||
@Override
|
||||
public void sendTextInAChannel(String text, AChannel channel) {
|
||||
sendTextInAChannelFuture(text, channel);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendTextInAChannel(String text, TextChannel channel) {
|
||||
sendTextInAChannelFuture(text, channel);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Message> sendTextInAChannelFuture(String text, AChannel channel) {
|
||||
Guild guild = botService.getInstance().getGuildById(channel.getServer().getId());
|
||||
if (guild != null) {
|
||||
TextChannel textChannel = guild.getTextChannelById(channel.getId());
|
||||
if(textChannel != null) {
|
||||
return textChannel.sendMessage(text).submit();
|
||||
return sendTextInAChannelFuture(text, textChannel);
|
||||
} else {
|
||||
log.error("Channel {} to post towards was not found in server {}", channel.getId(), channel.getServer().getId());
|
||||
throw new ChannelException(String.format("Channel %s to post to not found.", channel.getId()));
|
||||
@@ -49,6 +58,11 @@ public class ChannelServiceBean implements ChannelService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Message> sendTextInAChannelFuture(String text, TextChannel channel) {
|
||||
return channel.sendMessage(text).submit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Message> sendEmbedInAChannelFuture(MessageEmbed embed, AChannel channel) {
|
||||
Guild guild = botService.getInstance().getGuildById(channel.getServer().getId());
|
||||
|
||||
@@ -3,15 +3,15 @@ package dev.sheldan.abstracto.core.service;
|
||||
import dev.sheldan.abstracto.core.exception.EmoteException;
|
||||
import dev.sheldan.abstracto.core.exception.GuildException;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import dev.sheldan.abstracto.templating.model.MessageToSend;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
import net.dv8tion.jda.api.entities.Guild;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
@@ -32,6 +32,9 @@ public class MessageServiceBean implements MessageService {
|
||||
@Autowired
|
||||
private ChannelService channelService;
|
||||
|
||||
@Autowired
|
||||
private MessageServiceBean self;
|
||||
|
||||
@Override
|
||||
public void addReactionToMessage(String emoteKey, Long serverId, Message message) {
|
||||
Optional<Guild> guildByIdOptional = botService.getGuildById(serverId);
|
||||
@@ -74,4 +77,32 @@ public class MessageServiceBean implements MessageService {
|
||||
public void updateStatusMessage(AChannel channel, Long messageId, MessageToSend messageToSend) {
|
||||
channelService.editMessageInAChannel(messageToSend, channel, messageId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessageToUser(AUserInAServer userInAServer, String text, TextChannel feedbackChannel) {
|
||||
Member memberInServer = botService.getMemberInServer(userInAServer);
|
||||
sendMessageToUser(memberInServer.getUser(), text, feedbackChannel);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessageToUser(User user, String text, TextChannel feedbackChannel) {
|
||||
CompletableFuture<Message> messageFuture = new CompletableFuture<>();
|
||||
|
||||
user.openPrivateChannel().queue(privateChannel -> {
|
||||
privateChannel.sendMessage(text).queue(messageFuture::complete, messageFuture::completeExceptionally);
|
||||
});
|
||||
|
||||
messageFuture.exceptionally(e -> {
|
||||
log.warn("Failed to send message. ", e);
|
||||
if(feedbackChannel != null){
|
||||
self.sendFeedbackAboutException(e, feedbackChannel);
|
||||
}
|
||||
return null;
|
||||
});
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void sendFeedbackAboutException(Throwable e, TextChannel feedbackChannel) {
|
||||
channelService.sendTextInAChannel(String.format("Failed to send message: %s", e.getMessage()), feedbackChannel);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ spring.jpa.hibernate.naming_strategy = org.hibernate.cfg.ImprovedNamingStrategy
|
||||
log4j.logger.org.hibernate.SQL=info
|
||||
log4j.logger.org.hibernate.type.descriptor.sql=trace
|
||||
log4j.logger.org.hibernate.type=trace
|
||||
log4j.logger.dev.sheldan=info
|
||||
logging.level.dev.sheldan=info
|
||||
|
||||
spring.cache.cache-names=messages
|
||||
spring.cache.caffeine.spec=maximumSize=500,expireAfterAccess=600s
|
||||
|
||||
Reference in New Issue
Block a user