Skip to content

Commit 60529d6

Browse files
committed
Include embeds in starboard and merge images with starboard embeds
1 parent 4c7ea70 commit 60529d6

File tree

1 file changed

+40
-8
lines changed

1 file changed

+40
-8
lines changed

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

Lines changed: 40 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,18 @@ 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+
}
145153
}
146154
}
155+
147156
action.queue(starboardMessage -> {
148157
StarboardEntry entry = new StarboardEntry();
149158
entry.setOriginalMessageId(message.getIdLong());
@@ -216,11 +225,34 @@ private boolean removeMessageFromStarboard(long messageId, MessageChannel channe
216225

217226
private @NotNull MessageEmbed buildStarboardEmbed(@NotNull Message message) {
218227
User author = message.getAuthor();
219-
return new EmbedBuilder()
228+
EmbedBuilder builder = new EmbedBuilder()
220229
.setAuthor(UserUtils.getUserTag(author), message.getJumpUrl(), author.getEffectiveAvatarUrl())
221230
.setColor(Responses.Type.DEFAULT.getColor())
222231
.setDescription(message.getContentRaw())
223-
.setFooter("#" + message.getChannel().getName())
224-
.build();
232+
.setFooter("#" + message.getChannel().getName());
233+
234+
boolean attachedImage = false;
235+
236+
List<MessageEmbed> embeds = message.getEmbeds();
237+
if(embeds.size() > 0) {
238+
MessageEmbed firstEmbed = embeds.get(0);
239+
for(Field field : firstEmbed.getFields()) {
240+
builder.addField(field);
241+
}
242+
ImageInfo image = firstEmbed.getImage();
243+
if(image != null && image.getUrl() != null) {
244+
builder.setImage(image.getUrl());
245+
attachedImage = true;
246+
}
247+
}
248+
249+
if(!attachedImage) {
250+
List<Attachment> attachments = message.getAttachments();
251+
if(attachments.size() == 1) {
252+
builder.setImage(attachments.get(0).getUrl());
253+
}
254+
}
255+
256+
return builder.build();
225257
}
226258
}

0 commit comments

Comments
 (0)