added embed support fo message deleted and message edited

added attachment support for message deleted
added imageUrl support to embed templating
This commit is contained in:
Sheldan
2020-03-20 21:20:14 +01:00
parent ff29edbdac
commit d3a9a7a9f0
13 changed files with 102 additions and 10 deletions

View File

@@ -37,9 +37,9 @@ public class Warn implements Command {
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
WarnLog warnLogModel = (WarnLog) ContextConverter.fromCommandContext(commandContext, WarnLog.class);
warnLogModel.setWarnedUser(member);
warnLogModel.setMessage(commandContext.getMessage());
warnLogModel.setReason(reason);
warnLogModel.setWarningUser(commandContext.getAuthor());
warnLogModel.setMessageLink(commandContext.getMessage().getJumpUrl());
warnService.warnUser(member, commandContext.getAuthor(), reason, warnLogModel);
return Result.fromSuccess();
}

View File

@@ -4,9 +4,11 @@ import dev.sheldan.abstracto.core.ContextUtils;
import dev.sheldan.abstracto.core.models.database.PostTarget;
import dev.sheldan.abstracto.core.service.MessageCache;
import dev.sheldan.abstracto.core.service.PostTargetService;
import dev.sheldan.abstracto.moderation.models.template.listener.MessageDeletedAttachmentLog;
import dev.sheldan.abstracto.moderation.models.template.listener.MessageDeletedLog;
import dev.sheldan.abstracto.templating.TemplateService;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.MessageEmbed;
import net.dv8tion.jda.api.events.message.guild.GuildMessageDeleteEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import org.springframework.beans.factory.annotation.Autowired;
@@ -19,6 +21,7 @@ import javax.annotation.Nonnull;
public class MessageDeletedListener extends ListenerAdapter {
private static String MESSAGE_DELETED_TEMPLATE = "message_deleted";
private static String MESSAGE_DELETED_ATTACHMENT_TEMPLATE = "message_deleted_attachment";
@Autowired
private MessageCache messageCache;
@@ -41,8 +44,15 @@ public class MessageDeletedListener extends ListenerAdapter {
logModel.setMessage(messageFromCache);
String simpleMessageUpdatedMessage = templateService.renderTemplate(MESSAGE_DELETED_TEMPLATE, logModel);
postTargetService.sendTextInPostTarget(simpleMessageUpdatedMessage, PostTarget.EDIT_LOG, event.getGuild().getIdLong());
messageFromCache.getAttachments().forEach(attachment -> {
});
MessageEmbed embed = templateService.renderEmbedTemplate(MESSAGE_DELETED_TEMPLATE, logModel);
postTargetService.sendEmbedInPostTarget(embed, PostTarget.DELETE_LOG, event.getGuild().getIdLong());
for (int i = 0; i < messageFromCache.getAttachments().size(); i++) {
Message.Attachment attachment = messageFromCache.getAttachments().get(i);
MessageDeletedAttachmentLog log = (MessageDeletedAttachmentLog) contextUtils.fromMessage(messageFromCache, MessageDeletedAttachmentLog.class);
log.setImageUrl(attachment.getProxyUrl());
log.setCounter(i + 1);
MessageEmbed attachmentEmbed = templateService.renderEmbedTemplate(MESSAGE_DELETED_ATTACHMENT_TEMPLATE, log);
postTargetService.sendEmbedInPostTarget(attachmentEmbed, PostTarget.DELETE_LOG, event.getGuild().getIdLong());
}
}
}

View File

@@ -8,6 +8,7 @@ import dev.sheldan.abstracto.moderation.models.template.listener.MessageEditedLo
import dev.sheldan.abstracto.templating.TemplateService;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.MessageEmbed;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -43,5 +44,8 @@ public class MessageEditedListener implements MessageTextUpdatedListener {
.member(messageAfter.getMember()).build();
String simpleMessageUpdatedMessage = templateService.renderTemplate(MESSAGE_EDITED_TEMPLATE, log);
postTargetService.sendTextInPostTarget(simpleMessageUpdatedMessage, PostTarget.EDIT_LOG, messageAfter.getGuild().getIdLong());
MessageEmbed embed = templateService.renderEmbedTemplate(MESSAGE_EDITED_TEMPLATE, log);
postTargetService.sendEmbedInPostTarget(embed, PostTarget.DELETE_LOG, messageBefore.getGuild().getIdLong());
}
}

View File

@@ -0,0 +1,12 @@
{
"imageUrl": "${imageUrl}",
"fields": [
{
"name": "Direct Url",
"value": "[Link](${imageUrl})"
}
],
"footer": {
"text": "Attachment #${counter}"
}
}

View File

@@ -0,0 +1,22 @@
{
"author": {
"name": "${member.effectiveName}#${member.user.discriminator}",
"avatar": "${member.user.effectiveAvatarUrl}"
},
"description": "Message from ${member.effectiveName}#${member.user.discriminator} (${member.idLong?c}) removed in ${textChannel.asMention}",
"color" : {
"r": 200,
"g": 0,
"b": 0
},
"fields": [
{
"name": ":x: Original Message: ",
"value": "${message.contentRaw}"
},
{
"name": "Link",
"value": "[${textChannel.name}](${message.jumpUrl})"
}
]
}

View File

@@ -0,0 +1,26 @@
{
"author": {
"name": "${member.effectiveName}#${member.user.discriminator}",
"avatar": "${member.user.effectiveAvatarUrl}"
},
"description": "Message from ${member.effectiveName}#${member.user.discriminator} (${member.idLong?c}) edited in ${textChannel.asMention}",
"color" : {
"r": 200,
"g": 0,
"b": 0
},
"fields": [
{
"name": "Original Message: ",
"value": "${messageBefore.contentRaw}"
},
{
"name": "New Message: ",
"value": "${messageAfter.contentRaw}"
},
{
"name": "Jump link",
"value": "[${textChannel.name}](${messageBefore.jumpUrl})"
}
]
}

View File

@@ -25,7 +25,7 @@
<#if warning?has_content>
{
"name": "Location of the incident",
"value": "[${textChannel.name}](${messageLink})"
"value": "[${textChannel.name}](${message.jumpUrl})"
},
</#if>
{

View File

@@ -6,6 +6,7 @@ import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Message;
@Getter @SuperBuilder @Setter
@@ -14,6 +15,6 @@ public class WarnLog extends UserInitiatedServerContext {
private String reason;
private Member warnedUser;
private Member warningUser;
private String messageLink;
private Message message;
private Warning warning;
}

View File

@@ -0,0 +1,12 @@
package dev.sheldan.abstracto.moderation.models.template.listener;
import dev.sheldan.abstracto.core.models.UserInitiatedServerContext;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
@Getter @Setter @SuperBuilder
public class MessageDeletedAttachmentLog extends UserInitiatedServerContext {
private String imageUrl;
private Integer counter;
}

View File

@@ -12,6 +12,7 @@ public class EmbedConfiguration {
private EmbedColor color;
private String description;
private String thumbnail;
private String imageUrl;
private List<EmbedField> fields;
private EmbedFooter footer;
}

View File

@@ -76,10 +76,14 @@ public class TemplateServiceBean implements TemplateService {
if(footer != null) {
builder.setFooter(footer.getText(), footer.getIcon());
}
if(configuration.getFields() != null) {
configuration.getFields().forEach(embedField -> {
Boolean inline = embedField.getInline() != null ? embedField.getInline() : Boolean.FALSE;
builder.addField(embedField.getName(), embedField.getValue(), inline);
});
}
builder.setImage(configuration.getImageUrl());
EmbedColor color = configuration.getColor();
if(color != null) {