net.dv8tion.jda.core.entities.MessageEmbed Java Examples

The following examples show how to use net.dv8tion.jda.core.entities.MessageEmbed. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: PagedEmbedBuilder.java    From FlareBot with MIT License 6 votes vote down vote up
/**
 * Gets the {@link MessageEmbed} for a specified page.
 *
 * @param page The page to get an embed.
 * @return the {@link MessageEmbed} page.
 */
public MessageEmbed getEmbed(int page) {
    EmbedBuilder pageEmbed = new EmbedBuilder().setColor(ColorUtils.FLAREBOT_BLUE);
    if (title != null)
        pageEmbed.setTitle(title);
    if(useGroups) {
        int start = groupsPerPage * (page);
        int end = Math.min(start + groupsPerPage, groupTotal);
        int num = start;
        List<PaginationList<T>.PageGroup> groups = list.getGroups().subList(start, end);
        for (PaginationList.PageGroup group : groups) {
            pageEmbed.addField(groupPrefix + num, group.getGroupAsString(), false);
            num++;
        }
    } else {
        pageEmbed.setDescription((hasCodeBlock ? "```" + codeBlock + "\n" : "") + list.getPage(page) + (hasCodeBlock ? "\n```" : ""));
    }
    if (pageCounts) {
        pageEmbed.addField("Page", String.valueOf(page + 1), true);
        pageEmbed.addField("Total Pages", String.valueOf(pageTotal), true);
    }
    pageEmbed.setColor(color);
    return pageEmbed.build();
}
 
Example #2
Source File: ModlogEvents.java    From FlareBot with MIT License 6 votes vote down vote up
private void onGuildMemberRoleAdd(GuildMemberRoleAddEvent event, @Nonnull GuildWrapper wrapper) {
    if (cannotHandle(wrapper, ModlogEvent.MEMBER_ROLE_GIVE)) return;
    event.getGuild().getAuditLogs().queue(auditLogEntries -> {
        if (auditLogEntries.isEmpty())
            return;
        AuditLogEntry entry = auditLogEntries.get(0);
        Map<String, AuditLogChange> changes = entry.getChanges();
        AuditLogChange change = changes.get("$add");
        @SuppressWarnings("unchecked")
        HashMap<String, String> role = ((ArrayList<HashMap<String, String>>) change.getNewValue()).get(0);

        if (wrapper.getAutoAssignRoles().contains(role.get("id"))
                && ((System.currentTimeMillis() / 1000) - event.getMember().getJoinDate().toEpochSecond()) < 10) {
            return;
        }

        ModlogHandler.getInstance().postToModlog(wrapper, ModlogEvent.MEMBER_ROLE_GIVE,
                event.getUser(), entry.getUser(), null,
                new MessageEmbed.Field("Role", role.get("name") + " (" + role.get("id") + ")", true));
    });
}
 
Example #3
Source File: ModlogEvents.java    From FlareBot with MIT License 6 votes vote down vote up
private void onGuildMemberRoleRemove(GuildMemberRoleRemoveEvent event, @Nonnull GuildWrapper wrapper) {
    if (cannotHandle(wrapper, ModlogEvent.MEMBER_ROLE_REMOVE)) return;
    event.getGuild().getAuditLogs().queue(auditLogEntries -> {
        if (auditLogEntries.isEmpty())
            return;
        AuditLogEntry entry = auditLogEntries.get(0);
        Map<String, AuditLogChange> changes = entry.getChanges();
        AuditLogChange change = changes.get("$remove");
        @SuppressWarnings("unchecked")
        HashMap<String, String> role = ((ArrayList<HashMap<String, String>>) change.getNewValue()).get(0);

        ModlogHandler.getInstance().postToModlog(wrapper, ModlogEvent.MEMBER_ROLE_REMOVE,
                event.getUser(), entry.getUser(), null,
                new MessageEmbed.Field("Role", role.get("name") + " (" + role.get("id") + ")", true));
    });
}
 
Example #4
Source File: ModlogEvents.java    From FlareBot with MIT License 6 votes vote down vote up
private void onMessageDelete(MessageDeleteEvent event, @Nonnull GuildWrapper wrapper) {
    if (cannotHandle(wrapper, ModlogEvent.MESSAGE_DELETE)) return;
    AuditLogEntry entry = event.getGuild().getAuditLogs().type(ActionType.MESSAGE_DELETE).complete().get(0);
    if (entry.getUser().isBot()) return;
    User responsible = null;
    if (FlareBot.instance().getEvents().getRemovedByMeList().contains(event.getMessageIdLong())) {
        FlareBot.instance().getEvents().getRemovedByMeList().remove(event.getMessageIdLong());
        return;
    }
    if (!RedisController.exists(event.getMessageId())) return;
    RedisMessage deleted = GeneralUtils.toRedisMessage(RedisController.get(event.getMessageId()));
    if (entry.getTargetId().equals(deleted.getAuthorID())) {
        if (entry.getUser().isBot()) return;
        responsible = entry.getUser();
    }
    User sender = GuildUtils.getUser(deleted.getAuthorID());
    ModlogHandler.getInstance().postToModlog(wrapper, ModlogEvent.MESSAGE_DELETE, sender,
            (responsible != null ? new MessageEmbed.Field("Deleted By", MessageUtils.getUserAndId(responsible), true)
                    : null),
            new MessageEmbed.Field("Message", FormatUtils.truncate(1024, deleted.getContent(), true), true),
            new MessageEmbed.Field("Channel", event.getTextChannel().getName() + " (" + deleted.getChannelID() + ")", true),
            new MessageEmbed.Field("Sent", FormatUtils.formatTime(Instant.ofEpochMilli(deleted.getTimestamp())
                    .atZone(ZoneId.systemDefault()).toLocalDateTime()), true)
    );
    RedisController.del(event.getMessageId());
}
 
Example #5
Source File: ModlogEvents.java    From FlareBot with MIT License 5 votes vote down vote up
private void onGuildVoiceLeave(GuildVoiceLeaveEvent event, @Nonnull GuildWrapper wrapper) {
    if (event.getGuild() == null) return;
    if (cannotHandle(wrapper, ModlogEvent.MEMBER_VOICE_LEAVE)) return;
    ModlogHandler.getInstance().postToModlog(wrapper, ModlogEvent.MEMBER_VOICE_LEAVE,
            event.getMember().getUser(), new MessageEmbed.Field("Channel", event.getChannelLeft().getName()
                    + " (" + event.getChannelLeft().getId() + ")", true));
}
 
Example #6
Source File: Command.java    From Selfbot with Apache License 2.0 5 votes vote down vote up
protected void reply(MessageEmbed embed, MessageReceivedEvent event, Consumer<Message> consumer)
{
    if(type == Type.EDIT_ORIGINAL)
        event.getMessage().editMessage(new MessageBuilder().setEmbed(embed).build()).queue(consumer);
    else
        event.getChannel().sendMessage(new MessageBuilder().setEmbed(embed).build()).queue(consumer);
}
 
Example #7
Source File: Command.java    From Selfbot with Apache License 2.0 5 votes vote down vote up
protected void reply(MessageEmbed embed, MessageReceivedEvent event)
{
    if(type == Type.EDIT_ORIGINAL)
        event.getMessage().editMessage(new MessageBuilder().setEmbed(embed).build()).queue();
    else
        event.getChannel().sendMessage(new MessageBuilder().setEmbed(embed).build()).queue();
}
 
Example #8
Source File: ModlogEvents.java    From FlareBot with MIT License 5 votes vote down vote up
private void onGuildVoiceMove(GuildVoiceMoveEvent event, @Nonnull GuildWrapper wrapper) {
    if (cannotHandle(wrapper, ModlogEvent.MEMBER_VOICE_MOVE)) return;
    ModlogHandler.getInstance().postToModlog(wrapper, ModlogEvent.MEMBER_VOICE_MOVE,
            event.getMember().getUser(),
            new MessageEmbed.Field("Channel", "`" + event.getChannelLeft().getName() + "` -> `"
                    + event.getChannelJoined().getName() + "`", true));
}
 
Example #9
Source File: ModlogEvents.java    From FlareBot with MIT License 5 votes vote down vote up
private void onGuildMemberNickChange(GuildMemberNickChangeEvent event, @Nonnull GuildWrapper wrapper) {
    if (cannotHandle(wrapper, ModlogEvent.MEMBER_NICK_CHANGE)) return;
    ModlogHandler.getInstance().postToModlog(wrapper, ModlogEvent.MEMBER_NICK_CHANGE,
            event.getMember().getUser(),
            new MessageEmbed.Field("Previous nick", event.getPrevNick() != null ? event.getPrevNick() : event.getUser().getName(), true),
            new MessageEmbed.Field("New nick", event.getNewNick() != null ? event.getNewNick() : event.getUser().getName(), true));
}
 
Example #10
Source File: ModlogEvents.java    From FlareBot with MIT License 5 votes vote down vote up
private void onGuildUpdateExplicitContentLevel(GuildUpdateExplicitContentLevelEvent e, @Nonnull GuildWrapper wrapper) {
    if (cannotHandle(wrapper, ModlogEvent.GUILD_EXPLICIT_FILTER_CHANGE)) return;
    AuditLogEntry entry = e.getGuild().getAuditLogs().complete().get(0);
    AuditLogChange levelChange = entry.getChanges().get("explicit_content_filter");

    ModlogHandler.getInstance().postToModlog(wrapper, ModlogEvent.GUILD_EXPLICIT_FILTER_CHANGE, entry.getUser(),
            new MessageEmbed.Field("Old level", Guild.ExplicitContentLevel.fromKey(levelChange.getOldValue()).getDescription(), true),
            new MessageEmbed.Field("New level", Guild.ExplicitContentLevel.fromKey(levelChange.getNewValue()).getDescription(), true));
}
 
Example #11
Source File: ModlogEvents.java    From FlareBot with MIT License 5 votes vote down vote up
private void onMessageUpdate(MessageUpdateEvent event, @Nonnull GuildWrapper wrapper) {
    if (cannotHandle(wrapper, ModlogEvent.MESSAGE_EDIT)) return;
    if (event.getAuthor().isBot()) return;
    if (!RedisController.exists(event.getMessageId())) return;
    RedisMessage old = GeneralUtils.toRedisMessage(RedisController.get(event.getMessageId()));
    ModlogHandler.getInstance().postToModlog(wrapper, ModlogEvent.MESSAGE_EDIT, event.getAuthor(),
            new MessageEmbed.Field("Old Message", FormatUtils.truncate(1024, old.getContent(), true), false),
            new MessageEmbed.Field("New Message", FormatUtils.truncate(1024, event.getMessage().getContentDisplay(), true), false),
            new MessageEmbed.Field("Channel", event.getTextChannel().getName() + " (" + event.getTextChannel().getId() + ")", true));
    RedisController.set(event.getMessageId(), GeneralUtils.getRedisMessageJson(event.getMessage()), "xx", "ex", 61200);
}
 
Example #12
Source File: ModlogEvents.java    From FlareBot with MIT License 5 votes vote down vote up
private void onRoleDelete(RoleDeleteEvent event, @Nonnull GuildWrapper wrapper) {
    if (cannotHandle(wrapper, ModlogEvent.ROLE_DELETE)) return;
    event.getGuild().getAuditLogs().queue(auditLog -> {
        AuditLogEntry entry = auditLog.get(0);
        ModlogHandler.getInstance().postToModlog(wrapper, ModlogEvent.ROLE_DELETE,
                entry.getUser(), new MessageEmbed.Field("Role", event.getRole().getName()
                        + " (" + event.getRole().getId() + ")", true));
    });
}
 
Example #13
Source File: ModlogEvents.java    From FlareBot with MIT License 5 votes vote down vote up
private void onRoleCreate(RoleCreateEvent event, @Nonnull GuildWrapper wrapper) {
    if (event.getGuild() == null) return;
    if (cannotHandle(wrapper, ModlogEvent.ROLE_CREATE)) return;
    event.getGuild().getAuditLogs().queue(auditLog -> {
        AuditLogEntry entry = auditLog.get(0);
        ModlogHandler.getInstance().postToModlog(wrapper, ModlogEvent.ROLE_CREATE,
                entry.getUser(), new MessageEmbed.Field("Role", event.getRole().getName()
                        + " (" + event.getRole().getId() + ")", true));
    });

}
 
Example #14
Source File: ModlogEvents.java    From FlareBot with MIT License 5 votes vote down vote up
private void onGuildVoiceJoin(GuildVoiceJoinEvent event, @Nonnull GuildWrapper wrapper) {
    if (event.getGuild() == null) return;
    if (cannotHandle(wrapper, ModlogEvent.MEMBER_VOICE_JOIN)) return;
    ModlogHandler.getInstance().postToModlog(wrapper, ModlogEvent.MEMBER_VOICE_JOIN,
            event.getMember().getUser(), new MessageEmbed.Field("Channel", event.getChannelJoined().getName()
                    + " (" + event.getChannelJoined().getId() + ")", true));
}
 
Example #15
Source File: ModlogHandler.java    From FlareBot with MIT License 4 votes vote down vote up
public void postToModlog(GuildWrapper wrapper, ModlogEvent event, User user) {
    postToModlog(wrapper, event, user, null, null, new MessageEmbed.Field[0]);
}
 
Example #16
Source File: ModlogHandler.java    From FlareBot with MIT License 4 votes vote down vote up
public void postToModlog(GuildWrapper wrapper, ModlogEvent event, User user, MessageEmbed.Field... fields) {
    postToModlog(wrapper, event, user, null, null, fields);
}
 
Example #17
Source File: ModlogHandler.java    From FlareBot with MIT License 4 votes vote down vote up
public void postToModlog(GuildWrapper wrapper, ModlogEvent event, User user, EmbedBuilder builder) {
    postToModlog(wrapper, event, user, null, null, builder.getFields().toArray(new
            MessageEmbed.Field[builder.getFields().size()]));
}
 
Example #18
Source File: ModlogHandler.java    From FlareBot with MIT License 4 votes vote down vote up
public void postToModlog(GuildWrapper wrapper, ModlogEvent event, User target, User responsible, String reason) {
    postToModlog(wrapper, event, target, responsible, reason, new MessageEmbed.Field[0]);
}
 
Example #19
Source File: NINOListener.java    From FlareBot with MIT License 4 votes vote down vote up
private void onGuildMessageReceived(GuildMessageReceivedEvent event) {
    if (event.getAuthor().isBot()) return;
    if (event.getMember().hasPermission(event.getChannel(), Permission.MESSAGE_MANAGE)) return;

    GuildWrapper wrapper = FlareBotManager.instance().getGuild(event.getGuild().getId());
    if (wrapper.getNINO().isEnabled()) {

        // Apply the channel whitelist.
        if (wrapper.getNINO().getWhitelistedChannels().contains(event.getChannel().getIdLong()))
            return;

        if (wrapper.getModeration().isEventEnabled(wrapper, ModlogEvent.NINO)) {
            AtomicReference<String> msg = new AtomicReference<>(FormatUtils.stripMentions(event.getMessage().getContentDisplay()));
            URLChecker.instance().checkMessage(wrapper, event.getChannel(), msg.get(), (flag, url) -> {
                if (flag == null || url == null) return;

                for (String s : wrapper.getNINO().getWhitelist()) {
                    if (url.equalsIgnoreCase(s))
                        return;
                }

                event.getMessage().delete().queue();

                msg.set(FormatUtils.truncate(500, event.getMessage().getContentDisplay()));

                EmbedBuilder eb = new EmbedBuilder()
                        .addField("Message", msg.get(), false)
                        .addField("Check", flag.toString(), true)
                        .addField("Site", url, true);

                if (flag == URLCheckFlag.SUSPICIOUS) {
                    eb.addField(MessageUtils.ZERO_WIDTH_SPACE, "Message was removed due to a suspicious TLD, " +
                            "we delete ones which are commonly known to be used by spammers/scammers. " +
                            "Check this out for more info: https://www.spamhaus.org/statistics/tlds/" +
                            "\nIf you know this URL is perfectly fine and want us to whitelist it globally " +
                            "come to our " + Constants.INVITE_MARKDOWN + " otherwise you can just whitelist for your guild. " +
                            "Check out the NINO command for mor info.", false);
                } else if (flag == URLCheckFlag.PHISHING) {
                    eb.addField(MessageUtils.ZERO_WIDTH_SPACE, "These are sites which we have found to phish for " +
                            "users personal information such as users account info or other. These are mainly " +
                            "ones we know about and have been seen used around Discord. If you wish to report a " +
                            "new one please join our " + Constants.INVITE_MARKDOWN, false);
                }

                ModlogHandler.getInstance().postToModlog(wrapper, ModlogEvent.NINO, event.getAuthor(),
                        eb.getFields().toArray(new MessageEmbed.Field[]{})
                );
            });
        }
    }
}
 
Example #20
Source File: Events.java    From FlareBot with MIT License 4 votes vote down vote up
private void dispatchCommand(Command cmd, String[] args, GuildMessageReceivedEvent event, GuildWrapper guild) {
    COMMAND_POOL.submit(() -> {
        Map<String, String> mdcContext = (MDC.getCopyOfContextMap() == null ? new HashMap<>() : MDC.getCopyOfContextMap());
        mdcContext.put("command", cmd.getCommand());
        mdcContext.put("args", Arrays.toString(args).replace("\n", "\\n"));
        mdcContext.put("guild", event.getGuild().getId());
        mdcContext.put("user", event.getAuthor().getId());
        MDC.setContextMap(mdcContext);

        LOGGER.info(
                "Dispatching command '" + cmd.getCommand() + "' " + Arrays
                        .toString(args).replace("\n", "\\n") + " in " + event.getChannel() + "! Sender: " +
                        event.getAuthor().getName() + '#' + event.getAuthor().getDiscriminator());
        // We're sending a lot of commands... Let's change the way this works soon :D
        /*ApiRequester.requestAsync(ApiRoute.DISPATCH_COMMAND, new JSONObject().put("command", cmd.getCommand())
                .put("guildId", guild.getGuildId()));*/
        commandCounter.incrementAndGet();
        try {
            Histogram.Timer executionTimer = Metrics.commandExecutionTime.labels(cmd.getClass().getSimpleName()).startTimer();
            cmd.onCommand(event.getAuthor(), guild, event.getChannel(), event.getMessage(), args, event
                    .getMember());
            executionTimer.observeDuration();
            Metrics.commandsExecuted.labels(cmd.getClass().getSimpleName()).inc();

            MessageEmbed.Field field = null;
            if (args.length > 0) {
                String s = MessageUtils.getMessage(args, 0).replaceAll("`", "'");
                if (s.length() > 1000)
                    s = s.substring(0, 1000) + "...";
                field = new MessageEmbed.Field("Args", "`" + s + "`", false);
            }
            ModlogHandler.getInstance().postToModlog(guild, ModlogEvent.FLAREBOT_COMMAND, event.getAuthor(),
                    new MessageEmbed.Field("Channel", event.getChannel().getName() + " ("
                            + event.getChannel().getIdLong() + ")", true),
                    new MessageEmbed.Field("Command", cmd.getCommand(), true), field);
        } catch (Exception ex) {
            Metrics.commandExceptions.labels(ex.getClass().getSimpleName()).inc();
            MessageUtils.sendException("**There was an internal error trying to execute your command**", ex, event
                    .getChannel());
            LOGGER.error("Exception in guild " + event.getGuild().getId() + "!\n" + '\'' + cmd.getCommand() + "' "
                    + Arrays.toString(args) + " in " + event.getChannel() + "! Sender: " +
                    event.getAuthor().getName() + '#' + event.getAuthor().getDiscriminator(), ex);
        }

        if ((guild.hasBetaAccess() && cmd.deleteMessage() && guild.getSettings().shouldDeleteCommands())
                || cmd.deleteMessage()) {
            delete(event.getMessage());
            removedByMe.add(event.getMessageIdLong());
        }
    });
}
 
Example #21
Source File: MessageSender.java    From DiscordBot with Apache License 2.0 4 votes vote down vote up
public void sendMessage(TextChannel textChannel, MessageEmbed messageEmbed, boolean autoDelete) {
	sendMessage(textChannel, new MessageBuilder().setEmbed(messageEmbed).build(), autoDelete);
}
 
Example #22
Source File: ButtonUtil.java    From FlareBot with MIT License 2 votes vote down vote up
/**
 * Sends an embed button message with a set of buttons.
 *
 * @param channel The TextChannel to send it to.
 * @param embed   The embed to send.
 * @param buttons The buttons to display.
 */
public static void sendButtonedMessage(TextChannel channel, MessageEmbed embed, ButtonGroup buttons) {
    channel.sendMessage(embed).queue(message -> handleSuccessConsumer(channel, message, buttons));
}
 
Example #23
Source File: ButtonUtil.java    From FlareBot with MIT License 2 votes vote down vote up
/**
 * Sends an embed button message with a set of buttons, and returns the message.
 *
 * @return The message we sent to discord.
 *
 * @param channel The {@link TextChannel} to send it to.
 * @param embed   The {@link MessageEmbed} to send.
 * @param buttons The buttons to display.
 */
public static Message sendReturnedButtonedMessage(TextChannel channel, MessageEmbed embed, ButtonGroup buttons) {
    Message message = channel.sendMessage(embed).complete();
    handleSuccessConsumer(channel, message, buttons);
    return message;
}