Search in sources :

Example 21 with WebhookEmbedBuilder

use of club.minnced.discord.webhook.send.WebhookEmbedBuilder in project Sx4 by sx4-discord-bot.

the class LoggerHandler method onEmoteAdded.

public void onEmoteAdded(EmoteAddedEvent event) {
    Guild guild = event.getGuild();
    Emote emote = event.getEmote();
    LoggerEvent loggerEvent = LoggerEvent.EMOTE_CREATE;
    LoggerContext loggerContext = new LoggerContext().setEmote(emote);
    WebhookEmbedBuilder embed = new WebhookEmbedBuilder();
    embed.setDescription(String.format("The emote %s has been created", emote.getAsMention()));
    embed.setColor(this.bot.getConfig().getGreen());
    embed.setTimestamp(Instant.now());
    embed.setAuthor(new EmbedAuthor(guild.getName(), guild.getIconUrl(), null));
    embed.setFooter(new EmbedFooter(String.format("Emote ID: %s", emote.getId()), null));
    this.bot.getMongo().aggregateLoggers(this.getPipeline(guild.getIdLong())).whenComplete((documents, exception) -> {
        if (ExceptionUtility.sendErrorMessage(exception)) {
            return;
        }
        if (documents.isEmpty()) {
            return;
        }
        Document data = documents.get(0);
        List<Document> loggers = LoggerUtility.getValidLoggers(data.getList("loggers", Document.class), loggerEvent, loggerContext);
        if (loggers.isEmpty()) {
            return;
        }
        if (!emote.isManaged() && guild.getSelfMember().hasPermission(Permission.VIEW_AUDIT_LOGS)) {
            this.retrieveAuditLogsDelayed(guild, ActionType.EMOTE_CREATE).whenComplete((logs, auditException) -> {
                User moderator = logs == null ? null : logs.stream().filter(e -> Duration.between(e.getTimeCreated(), ZonedDateTime.now(ZoneOffset.UTC)).toSeconds() <= 5).filter(e -> e.getTargetIdLong() == emote.getIdLong()).map(AuditLogEntry::getUser).findFirst().orElse(null);
                if (moderator != null) {
                    loggerContext.setModerator(moderator);
                    embed.setDescription(String.format("The emote %s has been created by **%s**", emote.getAsMention(), moderator.getAsTag()));
                }
                this.queue(guild, loggers, loggerEvent, loggerContext, embed.build());
            });
        } else {
            this.queue(guild, loggers, loggerEvent, loggerContext, embed.build());
        }
    });
}
Also used : MessageBulkDeleteEvent(net.dv8tion.jda.api.events.message.MessageBulkDeleteEvent) Document(org.bson.Document) PermissionOverrideCreateEvent(net.dv8tion.jda.api.events.guild.override.PermissionOverrideCreateEvent) RoleCreateEvent(net.dv8tion.jda.api.events.role.RoleCreateEvent) StoreChannelDeleteEvent(net.dv8tion.jda.api.events.channel.store.StoreChannelDeleteEvent) Permission(net.dv8tion.jda.api.Permission) ZonedDateTime(java.time.ZonedDateTime) Aggregates(com.mongodb.client.model.Aggregates) EmoteUpdateRolesEvent(net.dv8tion.jda.api.events.emote.update.EmoteUpdateRolesEvent) AuditLogChange(net.dv8tion.jda.api.audit.AuditLogChange) CategoryCreateEvent(net.dv8tion.jda.api.events.channel.category.CategoryCreateEvent) LoggerManager(com.sx4.bot.managers.LoggerManager) ColourUtility(com.sx4.bot.utility.ColourUtility) TextChannelDeleteEvent(net.dv8tion.jda.api.events.channel.text.TextChannelDeleteEvent) EmoteAddedEvent(net.dv8tion.jda.api.events.emote.EmoteAddedEvent) TextChannelUpdateNameEvent(net.dv8tion.jda.api.events.channel.text.update.TextChannelUpdateNameEvent) TextChannelCreateEvent(net.dv8tion.jda.api.events.channel.text.TextChannelCreateEvent) Duration(java.time.Duration) GenericEvent(net.dv8tion.jda.api.events.GenericEvent) ZoneOffset(java.time.ZoneOffset) LoggerContext(com.sx4.bot.entities.management.LoggerContext) LoggerEvent(com.sx4.bot.entities.management.LoggerEvent) AuditLogKey(net.dv8tion.jda.api.audit.AuditLogKey) PermissionOverrideDeleteEvent(net.dv8tion.jda.api.events.guild.override.PermissionOverrideDeleteEvent) EmbedFooter(club.minnced.discord.webhook.send.WebhookEmbed.EmbedFooter) GuildMessageUpdateEvent(net.dv8tion.jda.api.events.message.guild.GuildMessageUpdateEvent) java.util.concurrent(java.util.concurrent) EmoteUpdateNameEvent(net.dv8tion.jda.api.events.emote.update.EmoteUpdateNameEvent) CategoryDeleteEvent(net.dv8tion.jda.api.events.channel.category.CategoryDeleteEvent) Instant(java.time.Instant) Collectors(java.util.stream.Collectors) GuildBanEvent(net.dv8tion.jda.api.events.guild.GuildBanEvent) GuildMemberRemoveEvent(net.dv8tion.jda.api.events.guild.member.GuildMemberRemoveEvent) EventListener(net.dv8tion.jda.api.hooks.EventListener) CategoryUpdateNameEvent(net.dv8tion.jda.api.events.channel.category.update.CategoryUpdateNameEvent) GuildMemberUpdateNicknameEvent(net.dv8tion.jda.api.events.guild.member.update.GuildMemberUpdateNicknameEvent) NotNull(org.jetbrains.annotations.NotNull) RoleUpdateColorEvent(net.dv8tion.jda.api.events.role.update.RoleUpdateColorEvent) ActionType(net.dv8tion.jda.api.audit.ActionType) net.dv8tion.jda.api.entities(net.dv8tion.jda.api.entities) VoiceChannelUpdateNameEvent(net.dv8tion.jda.api.events.channel.voice.update.VoiceChannelUpdateNameEvent) java.util(java.util) JDA(net.dv8tion.jda.api.JDA) EmbedAuthor(club.minnced.discord.webhook.send.WebhookEmbed.EmbedAuthor) GuildMemberRoleRemoveEvent(net.dv8tion.jda.api.events.guild.member.GuildMemberRoleRemoveEvent) RoleUpdatePermissionsEvent(net.dv8tion.jda.api.events.role.update.RoleUpdatePermissionsEvent) VoiceChannelDeleteEvent(net.dv8tion.jda.api.events.channel.voice.VoiceChannelDeleteEvent) Projections(com.mongodb.client.model.Projections) MongoDatabase(com.sx4.bot.database.mongo.MongoDatabase) TLongIntHashMap(gnu.trove.map.hash.TLongIntHashMap) EmbedField(club.minnced.discord.webhook.send.WebhookEmbed.EmbedField) AuditLogEntry(net.dv8tion.jda.api.audit.AuditLogEntry) Filters(com.mongodb.client.model.Filters) GuildMessageDeleteEvent(net.dv8tion.jda.api.events.message.guild.GuildMessageDeleteEvent) Bson(org.bson.conversions.Bson) Pair(net.dv8tion.jda.internal.utils.tuple.Pair) WebhookEmbedBuilder(club.minnced.discord.webhook.send.WebhookEmbedBuilder) Sx4(com.sx4.bot.core.Sx4) GuildMemberRoleAddEvent(net.dv8tion.jda.api.events.guild.member.GuildMemberRoleAddEvent) WebhookEmbed(club.minnced.discord.webhook.send.WebhookEmbed) EmoteRemovedEvent(net.dv8tion.jda.api.events.emote.EmoteRemovedEvent) Operators(com.sx4.bot.database.mongo.model.Operators) Accumulators(com.mongodb.client.model.Accumulators) TLongIntMap(gnu.trove.map.TLongIntMap) VoiceChannelCreateEvent(net.dv8tion.jda.api.events.channel.voice.VoiceChannelCreateEvent) LoggerUtility(com.sx4.bot.utility.LoggerUtility) RoleUpdateNameEvent(net.dv8tion.jda.api.events.role.update.RoleUpdateNameEvent) StoreChannelUpdateNameEvent(net.dv8tion.jda.api.events.channel.store.update.StoreChannelUpdateNameEvent) TLongObjectHashMap(gnu.trove.map.hash.TLongObjectHashMap) OkHttpClient(okhttp3.OkHttpClient) PermissionOverrideUpdateEvent(net.dv8tion.jda.api.events.guild.override.PermissionOverrideUpdateEvent) net.dv8tion.jda.api.events.guild.voice(net.dv8tion.jda.api.events.guild.voice) StoreChannelCreateEvent(net.dv8tion.jda.api.events.channel.store.StoreChannelCreateEvent) GuildMessage(com.sx4.bot.entities.cache.GuildMessage) GuildUnbanEvent(net.dv8tion.jda.api.events.guild.GuildUnbanEvent) TLongObjectMap(gnu.trove.map.TLongObjectMap) RoleDeleteEvent(net.dv8tion.jda.api.events.role.RoleDeleteEvent) ExceptionUtility(com.sx4.bot.utility.ExceptionUtility) StringUtility(com.sx4.bot.utility.StringUtility) GuildMemberJoinEvent(net.dv8tion.jda.api.events.guild.member.GuildMemberJoinEvent) EmbedFooter(club.minnced.discord.webhook.send.WebhookEmbed.EmbedFooter) EmbedAuthor(club.minnced.discord.webhook.send.WebhookEmbed.EmbedAuthor) WebhookEmbedBuilder(club.minnced.discord.webhook.send.WebhookEmbedBuilder) LoggerEvent(com.sx4.bot.entities.management.LoggerEvent) Document(org.bson.Document) LoggerContext(com.sx4.bot.entities.management.LoggerContext)

Example 22 with WebhookEmbedBuilder

use of club.minnced.discord.webhook.send.WebhookEmbedBuilder in project Sx4 by sx4-discord-bot.

the class ConnectionHandler method getEmbed.

public WebhookEmbed getEmbed(JDA jda, String state, CloseCode closeCode, OffsetDateTime disconnectTime, int colour) {
    ShardInfo shardInfo = jda.getShardInfo();
    WebhookEmbedBuilder builder = new WebhookEmbedBuilder().setColor(colour).setFooter(new EmbedFooter(state, null)).setTimestamp(disconnectTime != null ? disconnectTime : Instant.now()).addField(new EmbedField(false, "Shard", (shardInfo.getShardId() + 1) + "/" + shardInfo.getShardTotal())).setAuthor(new EmbedAuthor(jda.getSelfUser().getAsTag(), jda.getSelfUser().getEffectiveAvatarUrl(), null));
    if (closeCode != null) {
        builder.addField(new EmbedField(false, "Reason", closeCode.getMeaning() + " [" + closeCode.getCode() + "]"));
    }
    return builder.build();
}
Also used : EmbedFooter(club.minnced.discord.webhook.send.WebhookEmbed.EmbedFooter) EmbedField(club.minnced.discord.webhook.send.WebhookEmbed.EmbedField) EmbedAuthor(club.minnced.discord.webhook.send.WebhookEmbed.EmbedAuthor) WebhookEmbedBuilder(club.minnced.discord.webhook.send.WebhookEmbedBuilder) ShardInfo(net.dv8tion.jda.api.JDA.ShardInfo)

Example 23 with WebhookEmbedBuilder

use of club.minnced.discord.webhook.send.WebhookEmbedBuilder in project Sx4 by sx4-discord-bot.

the class ModLog method getWebhookEmbed.

public WebhookEmbed getWebhookEmbed(User moderator, User target) {
    WebhookEmbedBuilder embed = new WebhookEmbedBuilder();
    embed.setTitle(new EmbedTitle(this.action.toString(), null));
    embed.addField(new EmbedField(false, "Target", (target == null || target.getClass() == UserById.class ? "Anonymous#0000" : target.getAsTag()) + " (" + this.getTargetId() + ")"));
    embed.addField(new EmbedField(false, "Moderator", (moderator == null || moderator.getClass() == UserById.class ? "Anonymous#0000" : moderator.getAsTag()) + " (" + this.getModeratorId() + ")"));
    embed.addField(new EmbedField(false, "Reason", this.reason == null ? "None Given" : this.reason.getParsed()));
    embed.setTimestamp(Instant.ofEpochSecond(this.getTimestamp()));
    embed.setFooter(new EmbedFooter("ID: " + this.getHex(), null));
    return embed.build();
}
Also used : EmbedFooter(club.minnced.discord.webhook.send.WebhookEmbed.EmbedFooter) EmbedTitle(club.minnced.discord.webhook.send.WebhookEmbed.EmbedTitle) EmbedField(club.minnced.discord.webhook.send.WebhookEmbed.EmbedField) WebhookEmbedBuilder(club.minnced.discord.webhook.send.WebhookEmbedBuilder)

Example 24 with WebhookEmbedBuilder

use of club.minnced.discord.webhook.send.WebhookEmbedBuilder in project Vinny by kikkia.

the class R4cCommand method buildWebhookMessage.

private WebhookMessage buildWebhookMessage(CommandEvent commandEvent, String imageUrl, String title, JSONObject thread, String body) {
    WebhookMessageBuilder builder = new WebhookMessageBuilder();
    WebhookEmbedBuilder embedBuilder = new WebhookEmbedBuilder();
    embedBuilder.setImageUrl(imageUrl);
    embedBuilder.setTitle(new WebhookEmbed.EmbedTitle("/" + commandEvent.getArgs() + "/", "http://boards.4channel.org/" + commandEvent.getArgs() + "/thread/" + thread.getInt("no")));
    embedBuilder.setDescription(body);
    embedBuilder.addField(new WebhookEmbed.EmbedField(true, "Replies", thread.getInt("replies") + ""));
    embedBuilder.addField(new WebhookEmbed.EmbedField(true, "Images", thread.getInt("images") + ""));
    builder.addEmbeds(embedBuilder.build());
    return builder.build();
}
Also used : WebhookEmbed(club.minnced.discord.webhook.send.WebhookEmbed) WebhookMessageBuilder(club.minnced.discord.webhook.send.WebhookMessageBuilder) WebhookEmbedBuilder(club.minnced.discord.webhook.send.WebhookEmbedBuilder)

Example 25 with WebhookEmbedBuilder

use of club.minnced.discord.webhook.send.WebhookEmbedBuilder in project Vinny by kikkia.

the class RedditHelper method buildWebhookEmbedMessageForSubmission.

private static WebhookMessage buildWebhookEmbedMessageForSubmission(CommandEvent event, Submission submission) {
    WebhookEmbedBuilder builder = new WebhookEmbedBuilder();
    // TODO: Populate author url
    builder.setAuthor(new WebhookEmbed.EmbedAuthor(submission.getAuthor(), null, null));
    builder.addField(new WebhookEmbed.EmbedField(true, "Score", submission.getScore() + ""));
    builder.addField(new WebhookEmbed.EmbedField(true, "Comments", submission.getCommentCount() + ""));
    builder.setFooter(new WebhookEmbed.EmbedFooter(submission.getUrl(), REDDIT_SNOO_ICON_URL));
    // If the title is more than 256 characters then trim it
    String title = submission.getTitle();
    title = title.length() <= 256 ? title : title.substring(0, 252) + "...";
    builder.setTitle(new WebhookEmbed.EmbedTitle(title, submission.getUrl()));
    builder.setDescription("r/" + submission.getSubreddit());
    // If there is a thumbnail and it does match a url to an image
    if (submission.hasThumbnail() && submission.getThumbnail().matches("^[a-zA-Z0-9\\-\\.]+\\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)$")) {
        builder.setImageUrl(submission.getThumbnail());
    }
    WebhookEmbed embed = builder.build();
    WebhookMessageBuilder mBuilder = new WebhookMessageBuilder();
    mBuilder.addEmbeds(embed);
    mBuilder.setUsername(event.getSelfMember().getEffectiveName());
    mBuilder.setAvatarUrl(event.getSelfUser().getAvatarUrl());
    return mBuilder.build();
}
Also used : WebhookEmbed(club.minnced.discord.webhook.send.WebhookEmbed) WebhookMessageBuilder(club.minnced.discord.webhook.send.WebhookMessageBuilder) WebhookEmbedBuilder(club.minnced.discord.webhook.send.WebhookEmbedBuilder)

Aggregations

WebhookEmbedBuilder (club.minnced.discord.webhook.send.WebhookEmbedBuilder)48 WebhookEmbed (club.minnced.discord.webhook.send.WebhookEmbed)42 EmbedFooter (club.minnced.discord.webhook.send.WebhookEmbed.EmbedFooter)34 EmbedAuthor (club.minnced.discord.webhook.send.WebhookEmbed.EmbedAuthor)33 Document (org.bson.Document)32 EmbedField (club.minnced.discord.webhook.send.WebhookEmbed.EmbedField)30 LoggerContext (com.sx4.bot.entities.management.LoggerContext)30 LoggerEvent (com.sx4.bot.entities.management.LoggerEvent)29 Sx4 (com.sx4.bot.core.Sx4)28 GuildMessage (com.sx4.bot.entities.cache.GuildMessage)28 Instant (java.time.Instant)28 Permission (net.dv8tion.jda.api.Permission)28 GenericEvent (net.dv8tion.jda.api.events.GenericEvent)28 MongoDatabase (com.sx4.bot.database.mongo.MongoDatabase)27 Operators (com.sx4.bot.database.mongo.model.Operators)27 ExceptionUtility (com.sx4.bot.utility.ExceptionUtility)27 StringUtility (com.sx4.bot.utility.StringUtility)27 Duration (java.time.Duration)27 ZoneOffset (java.time.ZoneOffset)27 ZonedDateTime (java.time.ZonedDateTime)27