mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-03-06 16:26:31 +00:00
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:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"imageUrl": "${imageUrl}",
|
||||
"fields": [
|
||||
{
|
||||
"name": "Direct Url",
|
||||
"value": "[Link](${imageUrl})"
|
||||
}
|
||||
],
|
||||
"footer": {
|
||||
"text": "Attachment #${counter}"
|
||||
}
|
||||
}
|
||||
@@ -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})"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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})"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -25,7 +25,7 @@
|
||||
<#if warning?has_content>
|
||||
{
|
||||
"name": "Location of the incident",
|
||||
"value": "[${textChannel.name}](${messageLink})"
|
||||
"value": "[${textChannel.name}](${message.jumpUrl})"
|
||||
},
|
||||
</#if>
|
||||
{
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -76,10 +76,14 @@ public class TemplateServiceBean implements TemplateService {
|
||||
if(footer != null) {
|
||||
builder.setFooter(footer.getText(), footer.getIcon());
|
||||
}
|
||||
configuration.getFields().forEach(embedField -> {
|
||||
Boolean inline = embedField.getInline() != null ? embedField.getInline() : Boolean.FALSE;
|
||||
builder.addField(embedField.getName(), embedField.getValue(), inline);
|
||||
});
|
||||
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) {
|
||||
|
||||
Reference in New Issue
Block a user