mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-03-27 14:23:56 +00:00
[AB-80] added tracking of emotes used by server members and configuration
updated sonar scanner version changed some commands to be silent instead of adding a check reaction
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.command.handler;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CommandConstants;
|
||||
import dev.sheldan.abstracto.core.command.handler.provided.AChanelParameterHandler;
|
||||
import dev.sheldan.abstracto.core.command.handler.provided.TextChannelParameterHandler;
|
||||
import dev.sheldan.abstracto.core.models.database.AChannel;
|
||||
import dev.sheldan.abstracto.core.service.ChannelService;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
@@ -9,7 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class AChannelParameterHandler implements CommandParameterHandler {
|
||||
public class AChannelParameterHandlerImpl implements AChanelParameterHandler {
|
||||
|
||||
@Autowired
|
||||
private TextChannelParameterHandler textChannelParameterHandler;
|
||||
@@ -1,6 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.command.handler;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CommandConstants;
|
||||
import dev.sheldan.abstracto.core.command.handler.provided.AEmoteParameterHandler;
|
||||
import dev.sheldan.abstracto.core.command.handler.provided.EmoteParameterHandler;
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import dev.sheldan.abstracto.core.service.EmoteService;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
@@ -9,7 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class AEmoteParameterHandler implements CommandParameterHandler {
|
||||
public class AEmoteParameterHandlerImpl implements AEmoteParameterHandler {
|
||||
|
||||
@Autowired
|
||||
private EmoteParameterHandler emoteParameterHandler;
|
||||
@@ -1,6 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.command.handler;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CommandConstants;
|
||||
import dev.sheldan.abstracto.core.command.handler.provided.ARoleParameterHandler;
|
||||
import dev.sheldan.abstracto.core.command.handler.provided.RoleParameterHandler;
|
||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||
import dev.sheldan.abstracto.core.service.RoleService;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
@@ -9,7 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class ARoleParameterHandler implements CommandParameterHandler {
|
||||
public class ARoleParameterHandlerImpl implements ARoleParameterHandler {
|
||||
|
||||
@Autowired
|
||||
private RoleParameterHandler roleParameterHandler;
|
||||
@@ -1,11 +1,12 @@
|
||||
package dev.sheldan.abstracto.core.command.handler;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CommandConstants;
|
||||
import dev.sheldan.abstracto.core.command.handler.provided.BooleanParameterHandler;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class BooleanParameterHandler implements CommandParameterHandler {
|
||||
public class BooleanParameterHandlerImpl implements BooleanParameterHandler {
|
||||
@Override
|
||||
public boolean handles(Class clazz) {
|
||||
return clazz.equals(Boolean.class);
|
||||
@@ -2,11 +2,12 @@ package dev.sheldan.abstracto.core.command.handler;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CommandConstants;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandParameterKey;
|
||||
import dev.sheldan.abstracto.core.command.handler.provided.CommandKeyParameterHandler;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class CommandKeyParameterHandler implements CommandParameterHandler {
|
||||
public class CommandKeyParameterHandlerImpl implements CommandKeyParameterHandler {
|
||||
|
||||
@Override
|
||||
public boolean handles(Class clazz) {
|
||||
@@ -1,11 +1,12 @@
|
||||
package dev.sheldan.abstracto.core.command.handler;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CommandConstants;
|
||||
import dev.sheldan.abstracto.core.command.handler.provided.DoubleParameterHandler;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class DoubleParameterHandler implements CommandParameterHandler {
|
||||
public class DoubleParameterHandlerImpl implements DoubleParameterHandler {
|
||||
@Override
|
||||
public boolean handles(Class clazz) {
|
||||
return clazz.equals(Double.class);
|
||||
@@ -1,6 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.handler;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CommandConstants;
|
||||
import dev.sheldan.abstracto.core.command.handler.provided.DurationParameterHandler;
|
||||
import dev.sheldan.abstracto.core.utils.ParseUtils;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -8,7 +9,7 @@ import org.springframework.stereotype.Component;
|
||||
import java.time.Duration;
|
||||
|
||||
@Component
|
||||
public class DurationParameterHandler implements CommandParameterHandler {
|
||||
public class DurationParameterHandlerImpl implements DurationParameterHandler {
|
||||
@Override
|
||||
public boolean handles(Class clazz) {
|
||||
return clazz.equals(Duration.class);
|
||||
@@ -1,6 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.handler;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CommandConstants;
|
||||
import dev.sheldan.abstracto.core.command.handler.provided.EmoteParameterHandler;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@@ -9,7 +10,7 @@ import org.springframework.stereotype.Component;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
@Component
|
||||
public class EmoteParameterHandler implements CommandParameterHandler {
|
||||
public class EmoteParameterHandlerImpl implements EmoteParameterHandler {
|
||||
|
||||
@Override
|
||||
public boolean handles(Class clazz) {
|
||||
@@ -1,6 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.command.handler;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CommandConstants;
|
||||
import dev.sheldan.abstracto.core.command.handler.provided.EmoteParameterHandler;
|
||||
import dev.sheldan.abstracto.core.command.handler.provided.FullEmoteParameterHandler;
|
||||
import dev.sheldan.abstracto.core.models.FullEmote;
|
||||
import dev.sheldan.abstracto.core.models.database.AEmote;
|
||||
import dev.sheldan.abstracto.core.service.EmoteService;
|
||||
@@ -10,7 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class FullEmoteParameterHandler implements CommandParameterHandler {
|
||||
public class FullEmoteParameterHandlerImpl implements FullEmoteParameterHandler {
|
||||
|
||||
@Autowired
|
||||
private EmoteParameterHandler emoteParameterHandler;
|
||||
@@ -1,6 +1,8 @@
|
||||
package dev.sheldan.abstracto.core.command.handler;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CommandConstants;
|
||||
import dev.sheldan.abstracto.core.command.handler.provided.FullRoleParameterHandler;
|
||||
import dev.sheldan.abstracto.core.command.handler.provided.RoleParameterHandler;
|
||||
import dev.sheldan.abstracto.core.models.FullRole;
|
||||
import dev.sheldan.abstracto.core.models.database.ARole;
|
||||
import dev.sheldan.abstracto.core.service.RoleService;
|
||||
@@ -10,7 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class FullRoleParameterHandler implements CommandParameterHandler {
|
||||
public class FullRoleParameterHandlerImpl implements FullRoleParameterHandler {
|
||||
|
||||
@Autowired
|
||||
private RoleParameterHandler roleParameterHandler;
|
||||
@@ -1,11 +1,12 @@
|
||||
package dev.sheldan.abstracto.core.command.handler;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CommandConstants;
|
||||
import dev.sheldan.abstracto.core.command.handler.provided.IntegerParameterHandler;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class IntegerParameterHandler implements CommandParameterHandler {
|
||||
public class IntegerParameterHandlerImpl implements IntegerParameterHandler {
|
||||
|
||||
@Override
|
||||
public boolean handles(Class clazz) {
|
||||
@@ -1,11 +1,12 @@
|
||||
package dev.sheldan.abstracto.core.command.handler;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CommandConstants;
|
||||
import dev.sheldan.abstracto.core.command.handler.provided.LongParameterHandler;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class LongParameterHandler implements CommandParameterHandler {
|
||||
public class LongParameterHandlerImpl implements LongParameterHandler {
|
||||
|
||||
@Override
|
||||
public boolean handles(Class clazz) {
|
||||
@@ -1,6 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.handler;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CommandConstants;
|
||||
import dev.sheldan.abstracto.core.command.handler.provided.MemberParameterHandler;
|
||||
import net.dv8tion.jda.api.entities.Member;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -9,7 +10,7 @@ import java.util.concurrent.CompletableFuture;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
@Component
|
||||
public class MemberParameterHandler implements CommandParameterHandler {
|
||||
public class MemberParameterHandlerImpl implements MemberParameterHandler {
|
||||
@Override
|
||||
public boolean handles(Class clazz) {
|
||||
return clazz.equals(Member.class);
|
||||
@@ -1,6 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.handler;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CommandConstants;
|
||||
import dev.sheldan.abstracto.core.command.handler.provided.RoleParameterHandler;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.Role;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -8,7 +9,7 @@ import org.springframework.stereotype.Component;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
@Component
|
||||
public class RoleParameterHandler implements CommandParameterHandler {
|
||||
public class RoleParameterHandlerImpl implements RoleParameterHandler {
|
||||
@Override
|
||||
public boolean handles(Class clazz) {
|
||||
return clazz.equals(Role.class);
|
||||
@@ -1,6 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.command.handler;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.CommandConstants;
|
||||
import dev.sheldan.abstracto.core.command.handler.provided.TextChannelParameterHandler;
|
||||
import net.dv8tion.jda.api.entities.Message;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -8,7 +9,7 @@ import org.springframework.stereotype.Component;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
@Component
|
||||
public class TextChannelParameterHandler implements CommandParameterHandler {
|
||||
public class TextChannelParameterHandlerImpl implements TextChannelParameterHandler {
|
||||
@Override
|
||||
public boolean handles(Class clazz) {
|
||||
return clazz.equals(TextChannel.class);
|
||||
@@ -44,7 +44,7 @@ public class ListChannelGroups extends AbstractConditionableCommand {
|
||||
template.setGroups(convertAChannelGroupToChannelGroupChannel(channelGroups));
|
||||
MessageToSend response = templateService.renderEmbedTemplate("listChannelGroups_response", template);
|
||||
channelService.sendMessageToSendToChannel(response, commandContext.getChannel());
|
||||
return CommandResult.fromSuccess();
|
||||
return CommandResult.fromIgnored();
|
||||
}
|
||||
|
||||
private List<ChannelGroupModel> convertAChannelGroupToChannelGroupChannel(List<AChannelGroup> channelGroups) {
|
||||
|
||||
@@ -49,7 +49,7 @@ public class SetupFeature extends AbstractConditionableCommand {
|
||||
.userId(commandContext.getAuthor().getIdLong())
|
||||
.build();
|
||||
return setupService.performFeatureSetup(feature, initiatingUser, commandContext.getMessage().getIdLong())
|
||||
.thenApply(aVoid -> CommandResult.fromSuccess());
|
||||
.thenApply(aVoid -> CommandResult.fromIgnored());
|
||||
}
|
||||
throw new FeatureNotFoundException(name, featureConfigService.getFeaturesAsList());
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ public class FeatureModes extends AbstractConditionableCommand {
|
||||
}
|
||||
FeatureModesModel model = FeatureModesModel.builder().featureModes(featureModes).build();
|
||||
return FutureUtils.toSingleFutureGeneric(channelService.sendEmbedTemplateInChannel(FEATURE_MODES_RESPONSE_TEMPLATE_KEY, model, commandContext.getChannel()))
|
||||
.thenApply(aVoid -> CommandResult.fromSuccess());
|
||||
.thenApply(aVoid -> CommandResult.fromIgnored());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -45,7 +45,7 @@ public class Features extends AbstractConditionableCommand {
|
||||
featuresModel.setFeatures(featureFlagConverter.fromFeatureFlags(features));
|
||||
MessageToSend messageToSend = templateService.renderEmbedTemplate("features_response", featuresModel);
|
||||
return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel()))
|
||||
.thenApply(aVoid -> CommandResult.fromSuccess());
|
||||
.thenApply(aVoid -> CommandResult.fromIgnored());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -84,7 +84,7 @@ public class Help implements Command {
|
||||
model.setSubModules(subModules);
|
||||
MessageToSend messageToSend = templateService.renderEmbedTemplate("help_module_details_response", model);
|
||||
return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel()))
|
||||
.thenApply(aVoid -> CommandResult.fromSuccess());
|
||||
.thenApply(aVoid -> CommandResult.fromIgnored());
|
||||
} else if(commandRegistry.commandExists(parameter)) {
|
||||
Command command = commandRegistry.getCommandByName(parameter);
|
||||
log.trace("Displaying help for command {}.", command.getConfiguration().getName());
|
||||
@@ -100,7 +100,7 @@ public class Help implements Command {
|
||||
model.setCommand(command.getConfiguration());
|
||||
MessageToSend messageToSend = templateService.renderEmbedTemplate("help_command_details_response", model);
|
||||
return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel()))
|
||||
.thenApply(aVoid -> CommandResult.fromSuccess());
|
||||
.thenApply(aVoid -> CommandResult.fromIgnored());
|
||||
} else {
|
||||
return displayHelpOverview(commandContext);
|
||||
}
|
||||
@@ -115,7 +115,7 @@ public class Help implements Command {
|
||||
model.setModules(subModules);
|
||||
MessageToSend messageToSend = templateService.renderEmbedTemplate("help_module_overview_response", model);
|
||||
return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel()))
|
||||
.thenApply(aVoid -> CommandResult.fromSuccess());
|
||||
.thenApply(aVoid -> CommandResult.fromIgnored());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -134,7 +134,7 @@ public class Help implements Command {
|
||||
.parameters(Collections.singletonList(moduleOrCommandName))
|
||||
.help(helpInfo)
|
||||
.templated(true)
|
||||
.causesReaction(false)
|
||||
.causesReaction(true)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ public class Echo extends AbstractConditionableCommand {
|
||||
);
|
||||
EchoModel model = EchoModel.builder().text(sb.toString()).build();
|
||||
commandContext.getChannel().sendMessage(templateService.renderTemplate(TEMPLATE_NAME, model)).queue();
|
||||
return CommandResult.fromSuccess();
|
||||
return CommandResult.fromIgnored();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -36,7 +36,7 @@ public class Ping implements Command {
|
||||
long ping = commandContext.getJda().getGatewayPing();
|
||||
PingModel model = PingModel.builder().latency(ping).build();
|
||||
return channelService.sendTextTemplateInChannel(PING_TEMPLATE, model, commandContext.getChannel())
|
||||
.thenApply(message -> CommandResult.fromSuccess());
|
||||
.thenApply(message -> CommandResult.fromIgnored());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
import net.dv8tion.jda.api.events.emote.EmoteAddedEvent;
|
||||
import net.dv8tion.jda.api.events.emote.EmoteRemovedEvent;
|
||||
import net.dv8tion.jda.api.events.emote.update.EmoteUpdateNameEvent;
|
||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class EmoteListener extends ListenerAdapter {
|
||||
|
||||
@Autowired
|
||||
private List<EmoteCreatedListener> createdListeners;
|
||||
|
||||
@Autowired
|
||||
private List<EmoteDeletedListener> deletedListeners;
|
||||
|
||||
@Autowired
|
||||
private List<EmoteUpdatedListener> updatedListeners;
|
||||
|
||||
@Autowired
|
||||
@Lazy
|
||||
private EmoteListener self;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void onEmoteAdded(@NotNull EmoteAddedEvent event) {
|
||||
createdListeners.forEach(listener ->
|
||||
self.executeCreatedListener(listener, event.getEmote())
|
||||
);
|
||||
}
|
||||
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public void executeCreatedListener(EmoteCreatedListener listener, Emote createDdEmote) {
|
||||
listener.emoteCreated(createDdEmote);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEmoteRemoved(@NotNull EmoteRemovedEvent event) {
|
||||
deletedListeners.forEach(listener ->
|
||||
self.executeDeletedListener(listener, event.getEmote())
|
||||
);
|
||||
}
|
||||
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public void executeDeletedListener(EmoteDeletedListener listener, Emote createDdEmote) {
|
||||
listener.emoteDeleted(createDdEmote);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEmoteUpdateName(@NotNull EmoteUpdateNameEvent event) {
|
||||
updatedListeners.forEach(emoteUpdatedListener ->
|
||||
self.executeUpdatedListener(emoteUpdatedListener, event.getEmote(), event.getOldName(), event.getNewName())
|
||||
);
|
||||
}
|
||||
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
public void executeUpdatedListener(EmoteUpdatedListener listener, Emote updatedEmote, String oldName, String newName) {
|
||||
listener.emoteUpdated(updatedEmote, oldName, newName);
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
public void postConstruct() {
|
||||
createdListeners.sort(Comparator.comparing(Prioritized::getPriority).reversed());
|
||||
deletedListeners.sort(Comparator.comparing(Prioritized::getPriority).reversed());
|
||||
updatedListeners.sort(Comparator.comparing(Prioritized::getPriority).reversed());
|
||||
}
|
||||
}
|
||||
@@ -101,7 +101,12 @@ public class ChannelServiceBean implements ChannelService {
|
||||
@Override
|
||||
public CompletableFuture<Message> sendEmbedToChannel(MessageEmbed embed, MessageChannel channel) {
|
||||
log.trace("Sending embed to channel {}.", channel.getId());
|
||||
return channel.sendMessage(embed).submit();
|
||||
return sendEmbedToChannelInComplete(embed, channel).submit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public MessageAction sendEmbedToChannelInComplete(MessageEmbed embed, MessageChannel channel) {
|
||||
return channel.sendMessage(embed);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -122,25 +127,30 @@ public class ChannelServiceBean implements ChannelService {
|
||||
public List<CompletableFuture<Message>> sendMessageToSendToChannel(MessageToSend messageToSend, MessageChannel textChannel) {
|
||||
String messageText = messageToSend.getMessage();
|
||||
List<CompletableFuture<Message>> futures = new ArrayList<>();
|
||||
if(StringUtils.isBlank(messageText)) {
|
||||
log.trace("Only sending {} embeds to channel {}.", messageToSend.getEmbeds().size(), textChannel.getId());
|
||||
messageToSend.getEmbeds().forEach(embed ->
|
||||
futures.add(sendEmbedToChannel(embed, textChannel))
|
||||
);
|
||||
} else {
|
||||
log.trace("Sending mesagte text to channel {}.", textChannel.getId());
|
||||
MessageAction messageAction = textChannel.sendMessage(messageText);
|
||||
if(messageToSend.getEmbeds() != null && !messageToSend.getEmbeds().isEmpty()) {
|
||||
log.trace("Also sending {} embeds to channel {}.", messageToSend.getEmbeds().size(), textChannel.getId());
|
||||
CompletableFuture<Message> firstMessageFuture = messageAction.embed(messageToSend.getEmbeds().get(0)).submit();
|
||||
futures.add(firstMessageFuture);
|
||||
messageToSend.getEmbeds().stream().skip(1).forEach(embed ->
|
||||
futures.add(sendEmbedToChannel(embed, textChannel))
|
||||
);
|
||||
MessageAction firstMessageAction = null;
|
||||
List<MessageAction> allMessageActions = new ArrayList<>();
|
||||
if(!StringUtils.isBlank(messageText)) {
|
||||
firstMessageAction = textChannel.sendMessage(messageText);
|
||||
}
|
||||
if(!messageToSend.getEmbeds().isEmpty()) {
|
||||
if(firstMessageAction != null) {
|
||||
firstMessageAction.embed(messageToSend.getEmbeds().get(0));
|
||||
} else {
|
||||
futures.add(messageAction.submit());
|
||||
firstMessageAction = textChannel.sendMessage(messageToSend.getEmbeds().get(0));
|
||||
}
|
||||
messageToSend.getEmbeds().stream().skip(1).forEach(embed -> allMessageActions.add(sendEmbedToChannelInComplete(embed, textChannel)));
|
||||
}
|
||||
if(messageToSend.hasFileToSend()) {
|
||||
if(firstMessageAction != null) {
|
||||
firstMessageAction.addFile(messageToSend.getFileToSend());
|
||||
} else {
|
||||
firstMessageAction = textChannel.sendFile(messageToSend.getFileToSend());
|
||||
}
|
||||
}
|
||||
allMessageActions.add(0, firstMessageAction);
|
||||
allMessageActions.forEach(messageAction ->
|
||||
futures.add(messageAction.submit())
|
||||
);
|
||||
return futures;
|
||||
}
|
||||
|
||||
|
||||
@@ -158,4 +158,9 @@ public class EmoteServiceBean implements EmoteService {
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean emoteIsFromGuild(Emote emote, Guild guild) {
|
||||
return guild.getEmoteById(emote.getId()) != null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
<column name="enabled" type="BOOLEAN">
|
||||
<constraints nullable="false"/>
|
||||
</column>
|
||||
<column name="mode" type="VARCHAR(255)"/>
|
||||
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
|
||||
<column name="feature_id" type="BIGINT">
|
||||
<constraints nullable="false"/>
|
||||
|
||||
Reference in New Issue
Block a user