Search in sources :

Example 1 with Visitable

use of com.wolfram.alpha.visitor.Visitable in project SkyBot by duncte123.

the class WolframAlphaCommand method generateEmbed.

/**
 * Generates an embed for the {@link WAQueryResult result of a computation}
 *
 * @param event  The event
 * @param result The result generated
 * @return An {@link MessageEmbed embed} representing this {@link WAQueryResult result}
 */
private MessageEmbed generateEmbed(GuildMessageReceivedEvent event, WAQueryResult result) {
    Member m = event.getMember();
    EmbedBuilder eb = EmbedUtils.defaultEmbed();
    eb.setAuthor(m.getUser().getName(), null, m.getUser().getAvatarUrl());
    eb.setTitle("**Input:** " + a(result.getQuery().getInput()), a(result.getQuery().toWebsiteURL()));
    for (WAPod pod : result.getPods()) {
        String name = a(pod.getTitle());
        StringBuilder embeds = new StringBuilder();
        // Loop over the subpods
        for (WASubpod sp : pod.getSubpods()) {
            // yet another stringbuilder
            StringBuilder e = new StringBuilder();
            // append the title
            e.append(a(sp.getTitle()));
            // loop over the contents
            for (Visitable v : sp.getContents()) {
                String d = "";
                if (v instanceof WAImage) {
                    WAImage i = (WAImage) v;
                    d += "[" + a(i.getTitle()) + "](" + WebUtils.ins.shortenUrl(i.getURL()).execute() + ")";
                } else if (v instanceof WAInfo) {
                    WAInfo i = (WAInfo) v;
                    d += a(i.getText());
                // Ramid when?
                // TODO: Display more...
                } else if (v instanceof WALink) {
                    WALink l = (WALink) v;
                    d += "[" + a(l.getText()) + "](" + WebUtils.ins.shortenUrl(l.getURL()).execute() + ")";
                } else if (v instanceof WAPlainText) {
                    WAPlainText pt = (WAPlainText) v;
                    d += a(pt.getText());
                } else if (v instanceof WASound) {
                    WASound sound = (WASound) v;
                    d += WebUtils.ins.shortenUrl(sound.getURL()).execute();
                }
                e.append(d).append("\n\n");
            }
            embeds.append(a(e.toString().trim())).append("\n\n");
        }
        eb.addField(name, a(embeds.toString().trim()), false);
    }
    return eb.build();
}
Also used : EmbedBuilder(net.dv8tion.jda.core.EmbedBuilder) Visitable(com.wolfram.alpha.visitor.Visitable) Member(net.dv8tion.jda.core.entities.Member)

Aggregations

Visitable (com.wolfram.alpha.visitor.Visitable)1 EmbedBuilder (net.dv8tion.jda.core.EmbedBuilder)1 Member (net.dv8tion.jda.core.entities.Member)1