Skip to content

Commit 31000dd

Browse files
authored
Merge pull request #449 from Defective4/main
Include embeds in starboard and merge images with starboard embeds
2 parents 7780ef4 + a6ef055 commit 31000dd

File tree

1 file changed

+43
-8
lines changed

1 file changed

+43
-8
lines changed

src/main/java/net/javadiscord/javabot/systems/starboard/StarboardManager.java

Lines changed: 43 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
import lombok.extern.slf4j.Slf4j;
55
import net.dv8tion.jda.api.EmbedBuilder;
66
import net.dv8tion.jda.api.entities.*;
7+
import net.dv8tion.jda.api.entities.Message.Attachment;
8+
import net.dv8tion.jda.api.entities.MessageEmbed.Field;
9+
import net.dv8tion.jda.api.entities.MessageEmbed.ImageInfo;
710
import net.dv8tion.jda.api.entities.channel.ChannelType;
811
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
912
import net.dv8tion.jda.api.entities.emoji.Emoji;
@@ -25,6 +28,7 @@
2528
import org.jetbrains.annotations.NotNull;
2629
import org.springframework.dao.DataAccessException;
2730

31+
import java.util.List;
2832
import java.util.Optional;
2933
import java.util.concurrent.ExecutionException;
3034
import java.util.concurrent.ExecutorService;
@@ -137,13 +141,22 @@ private void addMessageToStarboard(Message message, int stars, @NotNull Starboar
137141
.sendMessage(String.format("%s %s", config.getEmojis().get(0), stars))
138142
.setActionRow(Button.link(message.getJumpUrl(), "Jump to Message"))
139143
.setEmbeds(embed);
140-
for (Message.Attachment a : message.getAttachments()) {
141-
try {
142-
action.addFiles(FileUpload.fromData(a.getProxy().download().get(), a.getFileName()));
143-
} catch (InterruptedException | ExecutionException e) {
144-
action.addContent("Could not add Attachment: " + a.getFileName());
144+
List<Attachment> attachments = message.getAttachments();
145+
146+
if(attachments.size() > 1) {
147+
for (Message.Attachment a : attachments) {
148+
try {
149+
action.addFiles(FileUpload.fromData(a.getProxy().download().get(), a.getFileName()));
150+
} catch (InterruptedException | ExecutionException e) {
151+
action.addContent("Could not add Attachment: " + a.getFileName());
152+
ExceptionLogger.capture(e);
153+
if(e instanceof InterruptedException) {
154+
Thread.currentThread().interrupt();
155+
}
156+
}
145157
}
146158
}
159+
147160
action.queue(starboardMessage -> {
148161
StarboardEntry entry = new StarboardEntry();
149162
entry.setOriginalMessageId(message.getIdLong());
@@ -216,11 +229,33 @@ private boolean removeMessageFromStarboard(long messageId, MessageChannel channe
216229

217230
private @NotNull MessageEmbed buildStarboardEmbed(@NotNull Message message) {
218231
User author = message.getAuthor();
219-
return new EmbedBuilder()
232+
EmbedBuilder builder = new EmbedBuilder()
220233
.setAuthor(UserUtils.getUserTag(author), message.getJumpUrl(), author.getEffectiveAvatarUrl())
221234
.setColor(Responses.Type.DEFAULT.getColor())
222235
.setDescription(message.getContentRaw())
223-
.setFooter("#" + message.getChannel().getName())
224-
.build();
236+
.setFooter("#" + message.getChannel().getName());
237+
238+
List<MessageEmbed> embeds = message.getEmbeds();
239+
if(embeds.size() > 0) {
240+
MessageEmbed firstEmbed = embeds.get(0);
241+
for(Field field : firstEmbed.getFields()) {
242+
builder.addField(field);
243+
}
244+
ImageInfo image = firstEmbed.getImage();
245+
if(image != null && image.getUrl() != null) {
246+
builder.setImage(image.getUrl());
247+
}
248+
String desc = message.getContentRaw();
249+
if(desc == null || desc.isEmpty()) {
250+
builder.setDescription(firstEmbed.getDescription());
251+
}
252+
}
253+
254+
List<Attachment> attachments = message.getAttachments();
255+
if(attachments.size() == 1) {
256+
builder.setImage(attachments.get(0).getUrl());
257+
}
258+
259+
return builder.build();
225260
}
226261
}

0 commit comments

Comments
 (0)