diff --git a/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/service/ModMailThreadServiceBean.java b/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/service/ModMailThreadServiceBean.java index ccddb6c57..e33605e45 100644 --- a/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/service/ModMailThreadServiceBean.java +++ b/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/java/dev/sheldan/abstracto/modmail/service/ModMailThreadServiceBean.java @@ -400,24 +400,25 @@ public class ModMailThreadServiceBean implements ModMailThreadService { public void sendReply(ModMailThread modMailThread, String text, Message message, PrivateChannel privateChannel, Boolean anonymous, MessageChannel feedBack) { AUserInAServer moderator = userInServerManagementService.loadUser(message.getMember()); Member userInGuild = botService.getMemberInServer(modMailThread.getUser()); - FullUser moderatorUser = FullUser - .builder() - .aUserInAServer(moderator) - .member(message.getMember()) - .build(); + Member moderatorMember = botService.getMemberInServer(moderator); FullUser fullThreadUser = FullUser .builder() .aUserInAServer(modMailThread.getUser()) .member(userInGuild) .build(); - ModMailModeratorReplyModel modMailUserReplyModel = ModMailModeratorReplyModel + ModMailModeratorReplyModel.ModMailModeratorReplyModelBuilder modMailModeratorReplyModelBuilder = ModMailModeratorReplyModel .builder() .text(text) .modMailThread(modMailThread) .postedMessage(message) - .threadUser(fullThreadUser) - .moderator(moderatorUser) - .build(); + .anonymous(anonymous) + .threadUser(fullThreadUser); + if(anonymous) { + modMailModeratorReplyModelBuilder.moderator(botService.getBotInGuild(modMailThread.getServer())); + } else { + modMailModeratorReplyModelBuilder.moderator(moderatorMember); + } + ModMailModeratorReplyModel modMailUserReplyModel = modMailModeratorReplyModelBuilder.build(); MessageToSend messageToSend = templateService.renderEmbedTemplate("modmail_staff_message", modMailUserReplyModel); List> completableFutures = channelService.sendMessageToSendToChannel(messageToSend, privateChannel); CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture[0])).thenAccept(aVoid -> { diff --git a/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/resources/templates/command/close/modmail_close_logged_message_embed_en_US.ftl b/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/resources/templates/command/close/modmail_close_logged_message_embed_en_US.ftl index 4c67f9d2b..6c4b1c560 100644 --- a/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/resources/templates/command/close/modmail_close_logged_message_embed_en_US.ftl +++ b/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/resources/templates/command/close/modmail_close_logged_message_embed_en_US.ftl @@ -7,10 +7,15 @@ "r": 200, "g": 0, "b": 255 - }, - "description": "${message.embeds[0].description}" + } + <#if message.embeds[0].description?has_content> + ,"description": "${message.embeds[0].description}" + <#if message.attachments?size gt 0> ,"imageUrl": "${message.embeds[0].image.proxyUrl}" - , - "timeStamp": "${message.timeCreated}" + + <#if modMailMessage.anonymous> + , "additionalMessage": "<#include "modmail_anonymous_message_note">" + + ,"timeStamp": "${message.timeCreated}" } diff --git a/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/resources/templates/command/reply/modmail_staff_message_embed_en_US.ftl b/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/resources/templates/command/reply/modmail_staff_message_embed_en_US.ftl index de93d1273..a7470d76a 100644 --- a/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/resources/templates/command/reply/modmail_staff_message_embed_en_US.ftl +++ b/abstracto-application/abstracto-modules/modmail/modmail-impl/src/main/resources/templates/command/reply/modmail_staff_message_embed_en_US.ftl @@ -1,7 +1,7 @@ { "author": { - "name": "${threadUser.member.effectiveName}", - "avatar": "${threadUser.member.user.effectiveAvatarUrl}" + "name": "${moderator.effectiveName}", + "avatar": "${moderator.user.effectiveAvatarUrl}" }, "title": { "title": "<#include "modmail_thread_staff_message_title">" @@ -10,9 +10,9 @@ "r": 200, "g": 0, "b": 255 - }, + } <#if text?has_content> - "description": "${text}" + , "description": "${text}" <#if postedMessage.attachments?size gt 0> ,"imageUrl": "${postedMessage.attachments[0].proxyUrl}" diff --git a/abstracto-application/abstracto-modules/modmail/modmail-int/src/main/java/dev/sheldan/abstracto/modmail/models/template/ModMailModeratorReplyModel.java b/abstracto-application/abstracto-modules/modmail/modmail-int/src/main/java/dev/sheldan/abstracto/modmail/models/template/ModMailModeratorReplyModel.java index 24f2c70a8..6e67445b0 100644 --- a/abstracto-application/abstracto-modules/modmail/modmail-int/src/main/java/dev/sheldan/abstracto/modmail/models/template/ModMailModeratorReplyModel.java +++ b/abstracto-application/abstracto-modules/modmail/modmail-int/src/main/java/dev/sheldan/abstracto/modmail/models/template/ModMailModeratorReplyModel.java @@ -5,6 +5,7 @@ import dev.sheldan.abstracto.modmail.models.database.ModMailThread; import lombok.Builder; import lombok.Getter; import lombok.Setter; +import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; @Getter @@ -12,8 +13,9 @@ import net.dv8tion.jda.api.entities.Message; @Builder public class ModMailModeratorReplyModel { private FullUser threadUser; - private FullUser moderator; + private Member moderator; private String text; private Message postedMessage; + private Boolean anonymous; private ModMailThread modMailThread; } diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/BotServiceBean.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/BotServiceBean.java index 824f05d24..27a0eed50 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/BotServiceBean.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/service/BotServiceBean.java @@ -149,6 +149,16 @@ public class BotServiceBean implements BotService { return instance.getGuildById(serverId); } + @Override + public Member getBotInGuild(AServer server) { + Optional guildOptional = getGuildById(server.getId()); + if(guildOptional.isPresent()) { + Guild guild = guildOptional.get(); + return guild.getMemberById(instance.getSelfUser().getId()); + } + return null; + } + @Override public void shutdown() { diff --git a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/BotService.java b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/BotService.java index 99cc45805..87a41675d 100644 --- a/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/BotService.java +++ b/abstracto-application/core/core-interface/src/main/java/dev/sheldan/abstracto/core/service/BotService.java @@ -29,5 +29,6 @@ public interface BotService { Optional getTextChannelFromServer(Long serverId, Long textChannelId); Optional getGuildById(Long serverId); Guild getGuildByIdNullable(Long serverId); + Member getBotInGuild(AServer server); void shutdown(); } diff --git a/abstracto-application/template-config/src/main/resources/templates/en_US/modMail/modmail_anonymous_message_note_en_US.ftl b/abstracto-application/template-config/src/main/resources/templates/en_US/modMail/modmail_anonymous_message_note_en_US.ftl new file mode 100644 index 000000000..2c5af033c --- /dev/null +++ b/abstracto-application/template-config/src/main/resources/templates/en_US/modMail/modmail_anonymous_message_note_en_US.ftl @@ -0,0 +1 @@ +This message was sent anonymous. \ No newline at end of file