new Field(obj.optString("name", null), obj.optString("value", null), Helpers.optBoolean(obj, "inline"),
MessageUtils.sendSuccessMessage(String.format("Changed status of Report with ID: **%d** to **%s**", id, status.getMessage()), channel, sender); ModlogHandler.getInstance().postToModlog(guild, ModlogEvent.REPORT_EDITED, null, sender, null, new MessageEmbed.Field("Report ID", String.valueOf(id), true), new MessageEmbed.Field("Old Status", old.getMessage(), true), new MessageEmbed.Field("New Status", report.getStatus().getMessage(), true), new MessageEmbed.Field("Responsible moderator", sender.getAsMention(), true));
new MessageEmbed.Field("Messages purged", String.valueOf((i)), true)); MessageUtils.sendAutoDeletedMessage(MessageUtils.getEmbed(sender) .setDescription(String.format("Deleted `%s` messages!", i)).build(),
new MessageEmbed.Field("Roles", sb.toString(), false)); } catch (Exception e1) { handle(e1, event, roles);
String stringifiedCommands = mapCommandContainers(context, value); if (stringifiedCommands.endsWith("-")) { fields.add(new MessageEmbed.Field( key.getName(), stringifiedCommands.substring(0, stringifiedCommands.length() - 1), false) ); } else { fields.add(new MessageEmbed.Field( key.getName(), stringifiedCommands, true )); if (l1.getValue().split("\n").length == l2.getValue().split("\n").length) { return 0; return l1.getValue().split("\n").length > l2.getValue().split("\n").length ? -1 : 1; }).forEach(message::addField);
shards.add(new MessageEmbed.Field(String.format("Shard #%s %s", i, getShardConnectionIcon(JDA.Status.SHUTDOWN) ), "Connecting to Discord...", true)); shards.add(new MessageEmbed.Field(String.format("Shard #%s %s", i, getShardConnectionIcon(shard.getStatus()) ), formatShardStatus(shard.getStatus()), true)); shards.add(new MessageEmbed.Field(String.format("Shard #%s %s%s", shard.getShardInfo().getShardId(), getShardConnectionIcon(shard.getStatus()),
new MessageEmbed.Field( context.i18n("fields.username"), member.getUser().getName(), true ), new MessageEmbed.Field( context.i18n("fields.userId"), member.getUser().getId(), true ), new MessageEmbed.Field( context.i18n("fields.joinedServer"), joinedDate.format(context.i18n("timeFormat")) + "\n*About " + shortenDiffForHumans(joinedDate) + "*", true ), new MessageEmbed.Field( context.i18n("fields.joinedDiscord"), createdDate.format(context.i18n("timeFormat")) + "\n*About " + shortenDiffForHumans(createdDate) + "*", placeholderMessage.addField(new MessageEmbed.Field( context.i18n("fields.roles", member.getRoles().size()), memberRoles, true )); placeholderMessage.addField(new MessageEmbed.Field( context.i18n("fields.servers"), context.i18n("inServers", NumberUtil.formatNicely(
if (s.length() > 1000) s = s.substring(0, 1000) + "..."; field = new MessageEmbed.Field("Args", "`" + s + "`", false); 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();
@Override public boolean onCommand(CommandMessage context, String[] args) { context.makeEmbeddedMessage(MessageType.INFO, new MessageEmbed.Field("Lavalink Stats (Cached)", buildLavalinkStats(), true), new MessageEmbed.Field("Audio Stats", I18n.format("**{0}** Servers listening\n**{1}** Users listening", NumberUtil.formatNicely(AudioHandler.getDefaultAudioHandler().getTotalListenersSize()), NumberUtil.formatNicely(getAudioListeners()) ), true), new MessageEmbed.Field("Queue Stats", I18n.format("**{0}** Songs in the queue\n**{1}** seconds in queue", NumberUtil.formatNicely(AudioHandler.getDefaultAudioHandler().getTotalQueueSize()), NumberUtil.formatNicely(getQueueLengthInSeconds()) ), true), new MessageEmbed.Field("Database Stats", I18n.format("**{0}** Selects\n**{1}** Inserts", NumberUtil.formatNicely(Metrics.databaseQueries.labels("SELECT").get()), NumberUtil.formatNicely(Metrics.databaseQueries.labels("INSERT").get()) ), true), new MessageEmbed.Field(EmbedBuilder.ZERO_WIDTH_SPACE, I18n.format("**{0}** Updates\n**{1}** Deletes", NumberUtil.formatNicely(Metrics.databaseQueries.labels("UPDATE").get()), NumberUtil.formatNicely(Metrics.databaseQueries.labels("DELETE").get()) ), true), new MessageEmbed.Field("Discord Shards", I18n.format("**{0}** Shards\n**{1} ms** Average Ping", avaire.getShardManager().getShards().size(), NumberUtil.formatNicely(avaire.getShardManager().getAveragePing()) ), true), new MessageEmbed.Field("Member Stats", I18n.format("**{0}** Unique Users\n**{1}** Unique Bots", NumberUtil.formatNicely(avaire.getShardManager().getUsers().stream().filter(user -> !user.isBot()).count()), NumberUtil.formatNicely(avaire.getShardManager().getUsers().stream().filter(User::isBot).count()) ), true), new MessageEmbed.Field("Channel Stats", I18n.format("**{0}** Text Channels\n**{1}** Voice Channels", NumberUtil.formatNicely(avaire.getShardEntityCounter().getTextChannels()),
new MessageEmbed.Field(context.i18n("fields.author"), "Senither#0001", true), new MessageEmbed.Field(context.i18n("fields.botId"), context.getJDA().getSelfUser().getId(), true), new MessageEmbed.Field(context.i18n("fields.library"), "[JDA](https://github.com/DV8FromTheWorld/JDA)", true), new MessageEmbed.Field(context.i18n("fields.database"), getDatabaseQueriesStats(context), true), new MessageEmbed.Field(context.i18n("fields.messages"), getMessagesReceivedStats(context), true), new MessageEmbed.Field(context.i18n("fields.shard"), "" + context.getJDA().getShardInfo().getShardId(), true), new MessageEmbed.Field(context.i18n("fields.commands"), NumberUtil.formatNicely(getTotalsFrom(Metrics.commandsReceived.collect())), true), new MessageEmbed.Field(context.i18n("fields.memory"), memoryUsage(context), true), new MessageEmbed.Field(context.i18n("fields.uptime"), applicationUptime(), true), new MessageEmbed.Field(context.i18n("fields.members"), NumberUtil.formatNicely(avaire.getShardEntityCounter().getUsers()), true), new MessageEmbed.Field(context.i18n("fields.channels"), NumberUtil.formatNicely(avaire.getShardEntityCounter().getChannels()), true), new MessageEmbed.Field(context.i18n("fields.servers"), NumberUtil.formatNicely(avaire.getShardEntityCounter().getGuilds()), true)
new MessageEmbed.Field("Reported By", MessageUtils.getTag(sender), true));
@Override public boolean onCommand(CommandMessage context, String[] args) { Guild guild = context.getGuild(); Carbon time = Carbon.createFromOffsetDateTime(guild.getCreationTime()); PlaceholderMessage placeholderMessage = context.makeEmbeddedMessage(getRoleColor(guild.getSelfMember().getRoles()), new MessageEmbed.Field(context.i18n("fields.id"), guild.getId(), true), new MessageEmbed.Field(context.i18n("fields.owner"), guild.getOwner().getUser().getName() + "#" + guild.getOwner().getUser().getDiscriminator(), true), new MessageEmbed.Field(context.i18n("fields.textChannels"), NumberUtil.formatNicely(guild.getTextChannels().size()), true), new MessageEmbed.Field(context.i18n("fields.voiceChannels"), NumberUtil.formatNicely(guild.getVoiceChannels().size()), true), new MessageEmbed.Field(context.i18n("fields.members"), NumberUtil.formatNicely(guild.getMembers().size()), true), new MessageEmbed.Field(context.i18n("fields.roles"), NumberUtil.formatNicely(guild.getRoles().size()), true), new MessageEmbed.Field(context.i18n("fields.region"), guild.getRegion().getName(), true), new MessageEmbed.Field(context.i18n("fields.createdAt"), time.format(context.i18n("timeFormat")) + "\n*About " + shortenDiffForHumans(time) + "*", true) ).setTitle(guild.getName()).setThumbnail(guild.getIconUrl()); if (!guild.getEmotes().isEmpty()) { boolean hasMany = guild.getEmotes().size() > 17; placeholderMessage.addField(new MessageEmbed.Field( context.i18n("fields.emojis", guild.getEmotes().size()), guild.getEmotes().stream() .map(emote -> emote.getName() + (hasMany ? "" : " " + emote.getAsMention())) .collect(Collectors.joining(", ")), true )); } placeholderMessage.requestedBy(context.getMember()).queue(); return true; }
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()); }
/** * Converts an {@link MessageEmbed} into a String. * This will first start with the title in bold. then adds the description. * Then puts in all the fields with the title fallowed by the value. The finally the footer italicized. * * @param embed The {@link MessageEmbed} to convert * @return The String containing embed data */ public static String embedToText(MessageEmbed embed) { StringBuilder sb = new StringBuilder(); if (embed.getTitle() != null) sb.append("**").append(embed.getTitle()).append("**: "); if (embed.getDescription() != null) sb.append(embed.getDescription()).append(" "); for (MessageEmbed.Field field : embed.getFields()) { sb.append("**").append(field.getName()).append("**: ").append(field.getValue()).append(" "); } if (embed.getFooter() != null) sb.append("*").append(embed.getFooter().getText()).append("*"); return sb.toString(); }
@Override public boolean onCommand(CommandMessage context, String[] args) { if (args.length == 0) { return sendErrorMessage(context, "Missing argument `ip`, you must include a valid IP address."); } if (!urlRegEX.matcher(args[0]).find()) { return sendErrorMessage(context, "Invalid IP address given, you must parse a valid IP address."); } RequestFactory.makeGET("http://ipinfo.io/" + args[0] + "/json").send((Consumer<Response>) response -> { JSONObject json = new JSONObject(response.toString()); MessageFactory.makeEmbeddedMessage(context.getChannel(), Color.decode("#005A8C"), new MessageEmbed.Field(context.i18n("hostname"), json.has("hostname") ? json.getString("hostname") : "Unknown", true), new MessageEmbed.Field(context.i18n("organisation"), json.has("org") ? json.getString("org") : "Unknown", true), new MessageEmbed.Field(context.i18n("country"), generateLocation(json), false) ).setTitle(args[0]).setFooter(generateFooter(context.getMessage()), null).queue(); }); return true; }
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)); }); }
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)); }); }