Search in sources :

Example 6 with Field

use of net.dv8tion.jda.api.entities.MessageEmbed.Field in project Discord-Core-Bot-Apple by demodude4u.

the class CommandReporting method createEmbeds.

public List<MessageEmbed> createEmbeds() {
    EmbedBuilder builder = new EmbedBuilder();
    builder.setAuthor(author, null, authorIconURL);
    if (commandStart != null) {
        builder.setTimestamp(commandStart);
    }
    if (level != Level.INFO) {
        builder.setColor(level.getColor());
    }
    if (command != null) {
        builder.addField("Command", limitContent(1000, command), false);
    }
    if (commandStart != null) {
        Duration responseTime = Duration.between(commandStart, Instant.now());
        builder.addField("Response Time", responseTime.toMillis() + "ms", true);
    }
    for (Field field : fields) {
        builder.addField(field);
    }
    if (!warnings.isEmpty()) {
        builder.addField("Warnings", limitContent(1000, joinUnique(warnings)), true);
    }
    if (!debugs.isEmpty()) {
        builder.addField("Debug", limitContent(1000, joinUnique(debugs)), true);
    }
    if (!exceptions.isEmpty()) {
        List<String> exceptionMessages = exceptions.stream().map(e -> e.getClass().getSimpleName() + ": " + e.getMessage()).collect(Collectors.toList());
        builder.addField("Exceptions", limitContent(1000, joinUnique(exceptionMessages)), true);
        builder.addField("Stack Trace", limitContent(1000, exceptions.stream().map(e -> {
            try (StringWriter sw = new StringWriter();
                PrintWriter pw = new PrintWriter(sw)) {
                e.printStackTrace(pw);
                pw.flush();
                return sw.toString();
            } catch (IOException e1) {
                e1.printStackTrace();
                return "";
            }
        }).distinct().collect(Collectors.joining("\n\n"))), false);
    }
    if (!replies.isEmpty()) {
        builder.addField("Replies", replies.stream().map(m -> "[Message](" + m.getJumpUrl() + ")").collect(Collectors.joining("\n")), false);
    }
    if (imageURL != null) {
        builder.setImage(imageURL);
    } else {
        replies.stream().flatMap(m -> m.getEmbeds().stream()).filter(e -> e.getImage() != null).map(e -> e.getImage().getUrl()).findFirst().ifPresent(builder::setImage);
    }
    if (builder.isValidLength()) {
        return ImmutableList.of(builder.build());
    }
    // Break up the fields to create multiple valid embeds
    List<MessageEmbed> embeds = new ArrayList<>();
    while (true) {
        List<Field> excessFields = new ArrayList<>();
        while (!builder.isValidLength()) {
            excessFields.add(0, builder.getFields().remove(builder.getFields().size() - 1));
        }
        embeds.add(builder.build());
        builder = new EmbedBuilder();
        excessFields.forEach(builder::addField);
        if (builder.isValidLength()) {
            embeds.add(builder.build());
            break;
        }
    }
    return embeds;
}
Also used : Color(java.awt.Color) PrintWriter(java.io.PrintWriter) Message(net.dv8tion.jda.api.entities.Message) Multiset(com.google.common.collect.Multiset) StringWriter(java.io.StringWriter) IOException(java.io.IOException) EmbedBuilder(net.dv8tion.jda.api.EmbedBuilder) Field(net.dv8tion.jda.api.entities.MessageEmbed.Field) Instant(java.time.Instant) Collectors(java.util.stream.Collectors) ArrayList(java.util.ArrayList) List(java.util.List) ImmutableList(com.google.common.collect.ImmutableList) Duration(java.time.Duration) LinkedHashMultiset(com.google.common.collect.LinkedHashMultiset) MessageEmbed(net.dv8tion.jda.api.entities.MessageEmbed) MessageEmbed(net.dv8tion.jda.api.entities.MessageEmbed) ArrayList(java.util.ArrayList) Duration(java.time.Duration) IOException(java.io.IOException) Field(net.dv8tion.jda.api.entities.MessageEmbed.Field) EmbedBuilder(net.dv8tion.jda.api.EmbedBuilder) StringWriter(java.io.StringWriter) PrintWriter(java.io.PrintWriter)

Aggregations

Field (net.dv8tion.jda.api.entities.MessageEmbed.Field)6 IOException (java.io.IOException)5 List (java.util.List)5 Arrays (java.util.Arrays)4 CommandReporting (com.demod.dcba.CommandReporting)3 Config (com.demod.factorio.Config)3 Utils (com.demod.factorio.Utils)3 Blueprint (com.demod.fbsr.Blueprint)3 BlueprintFinder (com.demod.fbsr.BlueprintFinder)3 BlueprintStringData (com.demod.fbsr.BlueprintStringData)3 FBSR (com.demod.fbsr.FBSR)3 WebUtils (com.demod.fbsr.WebUtils)3 ImmutableList (com.google.common.collect.ImmutableList)3 Instant (java.time.Instant)3 ArrayList (java.util.ArrayList)3 Collectors (java.util.stream.Collectors)3 BufferedImage (java.awt.image.BufferedImage)2 File (java.io.File)2 SimpleEntry (java.util.AbstractMap.SimpleEntry)2 Entry (java.util.Map.Entry)2