mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-03-09 09:09:52 +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;
|
String reason = parameters.size() == 2 ? (String) parameters.get(1) : defaultReason;
|
||||||
WarnLog warnLogModel = (WarnLog) ContextConverter.fromCommandContext(commandContext, WarnLog.class);
|
WarnLog warnLogModel = (WarnLog) ContextConverter.fromCommandContext(commandContext, WarnLog.class);
|
||||||
warnLogModel.setWarnedUser(member);
|
warnLogModel.setWarnedUser(member);
|
||||||
|
warnLogModel.setMessage(commandContext.getMessage());
|
||||||
warnLogModel.setReason(reason);
|
warnLogModel.setReason(reason);
|
||||||
warnLogModel.setWarningUser(commandContext.getAuthor());
|
warnLogModel.setWarningUser(commandContext.getAuthor());
|
||||||
warnLogModel.setMessageLink(commandContext.getMessage().getJumpUrl());
|
|
||||||
warnService.warnUser(member, commandContext.getAuthor(), reason, warnLogModel);
|
warnService.warnUser(member, commandContext.getAuthor(), reason, warnLogModel);
|
||||||
return Result.fromSuccess();
|
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.models.database.PostTarget;
|
||||||
import dev.sheldan.abstracto.core.service.MessageCache;
|
import dev.sheldan.abstracto.core.service.MessageCache;
|
||||||
import dev.sheldan.abstracto.core.service.PostTargetService;
|
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.moderation.models.template.listener.MessageDeletedLog;
|
||||||
import dev.sheldan.abstracto.templating.TemplateService;
|
import dev.sheldan.abstracto.templating.TemplateService;
|
||||||
import net.dv8tion.jda.api.entities.Message;
|
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.events.message.guild.GuildMessageDeleteEvent;
|
||||||
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -19,6 +21,7 @@ import javax.annotation.Nonnull;
|
|||||||
public class MessageDeletedListener extends ListenerAdapter {
|
public class MessageDeletedListener extends ListenerAdapter {
|
||||||
|
|
||||||
private static String MESSAGE_DELETED_TEMPLATE = "message_deleted";
|
private static String MESSAGE_DELETED_TEMPLATE = "message_deleted";
|
||||||
|
private static String MESSAGE_DELETED_ATTACHMENT_TEMPLATE = "message_deleted_attachment";
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageCache messageCache;
|
private MessageCache messageCache;
|
||||||
@@ -41,8 +44,15 @@ public class MessageDeletedListener extends ListenerAdapter {
|
|||||||
logModel.setMessage(messageFromCache);
|
logModel.setMessage(messageFromCache);
|
||||||
String simpleMessageUpdatedMessage = templateService.renderTemplate(MESSAGE_DELETED_TEMPLATE, logModel);
|
String simpleMessageUpdatedMessage = templateService.renderTemplate(MESSAGE_DELETED_TEMPLATE, logModel);
|
||||||
postTargetService.sendTextInPostTarget(simpleMessageUpdatedMessage, PostTarget.EDIT_LOG, event.getGuild().getIdLong());
|
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 dev.sheldan.abstracto.templating.TemplateService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.dv8tion.jda.api.entities.Message;
|
import net.dv8tion.jda.api.entities.Message;
|
||||||
|
import net.dv8tion.jda.api.entities.MessageEmbed;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -43,5 +44,8 @@ public class MessageEditedListener implements MessageTextUpdatedListener {
|
|||||||
.member(messageAfter.getMember()).build();
|
.member(messageAfter.getMember()).build();
|
||||||
String simpleMessageUpdatedMessage = templateService.renderTemplate(MESSAGE_EDITED_TEMPLATE, log);
|
String simpleMessageUpdatedMessage = templateService.renderTemplate(MESSAGE_EDITED_TEMPLATE, log);
|
||||||
postTargetService.sendTextInPostTarget(simpleMessageUpdatedMessage, PostTarget.EDIT_LOG, messageAfter.getGuild().getIdLong());
|
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>
|
<#if warning?has_content>
|
||||||
{
|
{
|
||||||
"name": "Location of the incident",
|
"name": "Location of the incident",
|
||||||
"value": "[${textChannel.name}](${messageLink})"
|
"value": "[${textChannel.name}](${message.jumpUrl})"
|
||||||
},
|
},
|
||||||
</#if>
|
</#if>
|
||||||
{
|
{
|
||||||
@@ -6,6 +6,7 @@ import lombok.Getter;
|
|||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import lombok.experimental.SuperBuilder;
|
import lombok.experimental.SuperBuilder;
|
||||||
import net.dv8tion.jda.api.entities.Member;
|
import net.dv8tion.jda.api.entities.Member;
|
||||||
|
import net.dv8tion.jda.api.entities.Message;
|
||||||
|
|
||||||
|
|
||||||
@Getter @SuperBuilder @Setter
|
@Getter @SuperBuilder @Setter
|
||||||
@@ -14,6 +15,6 @@ public class WarnLog extends UserInitiatedServerContext {
|
|||||||
private String reason;
|
private String reason;
|
||||||
private Member warnedUser;
|
private Member warnedUser;
|
||||||
private Member warningUser;
|
private Member warningUser;
|
||||||
private String messageLink;
|
private Message message;
|
||||||
private Warning warning;
|
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 EmbedColor color;
|
||||||
private String description;
|
private String description;
|
||||||
private String thumbnail;
|
private String thumbnail;
|
||||||
|
private String imageUrl;
|
||||||
private List<EmbedField> fields;
|
private List<EmbedField> fields;
|
||||||
private EmbedFooter footer;
|
private EmbedFooter footer;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,10 +76,14 @@ public class TemplateServiceBean implements TemplateService {
|
|||||||
if(footer != null) {
|
if(footer != null) {
|
||||||
builder.setFooter(footer.getText(), footer.getIcon());
|
builder.setFooter(footer.getText(), footer.getIcon());
|
||||||
}
|
}
|
||||||
|
if(configuration.getFields() != null) {
|
||||||
configuration.getFields().forEach(embedField -> {
|
configuration.getFields().forEach(embedField -> {
|
||||||
Boolean inline = embedField.getInline() != null ? embedField.getInline() : Boolean.FALSE;
|
Boolean inline = embedField.getInline() != null ? embedField.getInline() : Boolean.FALSE;
|
||||||
builder.addField(embedField.getName(), embedField.getValue(), inline);
|
builder.addField(embedField.getName(), embedField.getValue(), inline);
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
builder.setImage(configuration.getImageUrl());
|
||||||
|
|
||||||
EmbedColor color = configuration.getColor();
|
EmbedColor color = configuration.getColor();
|
||||||
if(color != null) {
|
if(color != null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user