added anonymous message handling to modmail

This commit is contained in:
Sheldan
2020-05-08 00:58:05 +02:00
parent c03788a065
commit ea6fe240f4
7 changed files with 38 additions and 18 deletions

View File

@@ -400,24 +400,25 @@ public class ModMailThreadServiceBean implements ModMailThreadService {
public void sendReply(ModMailThread modMailThread, String text, Message message, PrivateChannel privateChannel, Boolean anonymous, MessageChannel feedBack) { public void sendReply(ModMailThread modMailThread, String text, Message message, PrivateChannel privateChannel, Boolean anonymous, MessageChannel feedBack) {
AUserInAServer moderator = userInServerManagementService.loadUser(message.getMember()); AUserInAServer moderator = userInServerManagementService.loadUser(message.getMember());
Member userInGuild = botService.getMemberInServer(modMailThread.getUser()); Member userInGuild = botService.getMemberInServer(modMailThread.getUser());
FullUser moderatorUser = FullUser Member moderatorMember = botService.getMemberInServer(moderator);
.builder()
.aUserInAServer(moderator)
.member(message.getMember())
.build();
FullUser fullThreadUser = FullUser FullUser fullThreadUser = FullUser
.builder() .builder()
.aUserInAServer(modMailThread.getUser()) .aUserInAServer(modMailThread.getUser())
.member(userInGuild) .member(userInGuild)
.build(); .build();
ModMailModeratorReplyModel modMailUserReplyModel = ModMailModeratorReplyModel ModMailModeratorReplyModel.ModMailModeratorReplyModelBuilder modMailModeratorReplyModelBuilder = ModMailModeratorReplyModel
.builder() .builder()
.text(text) .text(text)
.modMailThread(modMailThread) .modMailThread(modMailThread)
.postedMessage(message) .postedMessage(message)
.threadUser(fullThreadUser) .anonymous(anonymous)
.moderator(moderatorUser) .threadUser(fullThreadUser);
.build(); if(anonymous) {
modMailModeratorReplyModelBuilder.moderator(botService.getBotInGuild(modMailThread.getServer()));
} else {
modMailModeratorReplyModelBuilder.moderator(moderatorMember);
}
ModMailModeratorReplyModel modMailUserReplyModel = modMailModeratorReplyModelBuilder.build();
MessageToSend messageToSend = templateService.renderEmbedTemplate("modmail_staff_message", modMailUserReplyModel); MessageToSend messageToSend = templateService.renderEmbedTemplate("modmail_staff_message", modMailUserReplyModel);
List<CompletableFuture<Message>> completableFutures = channelService.sendMessageToSendToChannel(messageToSend, privateChannel); List<CompletableFuture<Message>> completableFutures = channelService.sendMessageToSendToChannel(messageToSend, privateChannel);
CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture[0])).thenAccept(aVoid -> { CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture[0])).thenAccept(aVoid -> {

View File

@@ -7,10 +7,15 @@
"r": 200, "r": 200,
"g": 0, "g": 0,
"b": 255 "b": 255
}, }
"description": "${message.embeds[0].description}" <#if message.embeds[0].description?has_content>
,"description": "${message.embeds[0].description}"
</#if>
<#if message.attachments?size gt 0> <#if message.attachments?size gt 0>
,"imageUrl": "${message.embeds[0].image.proxyUrl}" ,"imageUrl": "${message.embeds[0].image.proxyUrl}"
</#if>, </#if>
"timeStamp": "${message.timeCreated}" <#if modMailMessage.anonymous>
, "additionalMessage": "<#include "modmail_anonymous_message_note">"
</#if>
,"timeStamp": "${message.timeCreated}"
} }

View File

@@ -1,7 +1,7 @@
{ {
"author": { "author": {
"name": "${threadUser.member.effectiveName}", "name": "${moderator.effectiveName}",
"avatar": "${threadUser.member.user.effectiveAvatarUrl}" "avatar": "${moderator.user.effectiveAvatarUrl}"
}, },
"title": { "title": {
"title": "<#include "modmail_thread_staff_message_title">" "title": "<#include "modmail_thread_staff_message_title">"
@@ -10,9 +10,9 @@
"r": 200, "r": 200,
"g": 0, "g": 0,
"b": 255 "b": 255
}, }
<#if text?has_content> <#if text?has_content>
"description": "${text}" , "description": "${text}"
</#if> </#if>
<#if postedMessage.attachments?size gt 0> <#if postedMessage.attachments?size gt 0>
,"imageUrl": "${postedMessage.attachments[0].proxyUrl}" ,"imageUrl": "${postedMessage.attachments[0].proxyUrl}"

View File

@@ -5,6 +5,7 @@ import dev.sheldan.abstracto.modmail.models.database.ModMailThread;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Message; import net.dv8tion.jda.api.entities.Message;
@Getter @Getter
@@ -12,8 +13,9 @@ import net.dv8tion.jda.api.entities.Message;
@Builder @Builder
public class ModMailModeratorReplyModel { public class ModMailModeratorReplyModel {
private FullUser threadUser; private FullUser threadUser;
private FullUser moderator; private Member moderator;
private String text; private String text;
private Message postedMessage; private Message postedMessage;
private Boolean anonymous;
private ModMailThread modMailThread; private ModMailThread modMailThread;
} }

View File

@@ -149,6 +149,16 @@ public class BotServiceBean implements BotService {
return instance.getGuildById(serverId); return instance.getGuildById(serverId);
} }
@Override
public Member getBotInGuild(AServer server) {
Optional<Guild> guildOptional = getGuildById(server.getId());
if(guildOptional.isPresent()) {
Guild guild = guildOptional.get();
return guild.getMemberById(instance.getSelfUser().getId());
}
return null;
}
@Override @Override
public void shutdown() { public void shutdown() {

View File

@@ -29,5 +29,6 @@ public interface BotService {
Optional<TextChannel> getTextChannelFromServer(Long serverId, Long textChannelId); Optional<TextChannel> getTextChannelFromServer(Long serverId, Long textChannelId);
Optional<Guild> getGuildById(Long serverId); Optional<Guild> getGuildById(Long serverId);
Guild getGuildByIdNullable(Long serverId); Guild getGuildByIdNullable(Long serverId);
Member getBotInGuild(AServer server);
void shutdown(); void shutdown();
} }