|
4 | 4 | import lombok.extern.slf4j.Slf4j; |
5 | 5 | import net.dv8tion.jda.api.EmbedBuilder; |
6 | 6 | 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; |
7 | 10 | import net.dv8tion.jda.api.entities.channel.ChannelType; |
8 | 11 | import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel; |
9 | 12 | import net.dv8tion.jda.api.entities.emoji.Emoji; |
|
25 | 28 | import org.jetbrains.annotations.NotNull; |
26 | 29 | import org.springframework.dao.DataAccessException; |
27 | 30 |
|
| 31 | +import java.util.List; |
28 | 32 | import java.util.Optional; |
29 | 33 | import java.util.concurrent.ExecutionException; |
30 | 34 | import java.util.concurrent.ExecutorService; |
@@ -137,13 +141,18 @@ private void addMessageToStarboard(Message message, int stars, @NotNull Starboar |
137 | 141 | .sendMessage(String.format("%s %s", config.getEmojis().get(0), stars)) |
138 | 142 | .setActionRow(Button.link(message.getJumpUrl(), "Jump to Message")) |
139 | 143 | .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 | + } |
145 | 153 | } |
146 | 154 | } |
| 155 | + |
147 | 156 | action.queue(starboardMessage -> { |
148 | 157 | StarboardEntry entry = new StarboardEntry(); |
149 | 158 | entry.setOriginalMessageId(message.getIdLong()); |
@@ -216,11 +225,34 @@ private boolean removeMessageFromStarboard(long messageId, MessageChannel channe |
216 | 225 |
|
217 | 226 | private @NotNull MessageEmbed buildStarboardEmbed(@NotNull Message message) { |
218 | 227 | User author = message.getAuthor(); |
219 | | - return new EmbedBuilder() |
| 228 | + EmbedBuilder builder = new EmbedBuilder() |
220 | 229 | .setAuthor(UserUtils.getUserTag(author), message.getJumpUrl(), author.getEffectiveAvatarUrl()) |
221 | 230 | .setColor(Responses.Type.DEFAULT.getColor()) |
222 | 231 | .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(); |
225 | 257 | } |
226 | 258 | } |
0 commit comments