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) {
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<CompletableFuture<Message>> completableFutures = channelService.sendMessageToSendToChannel(messageToSend, privateChannel);
CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture[0])).thenAccept(aVoid -> {

View File

@@ -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>
<#if message.attachments?size gt 0>
,"imageUrl": "${message.embeds[0].image.proxyUrl}"
</#if>,
"timeStamp": "${message.timeCreated}"
</#if>
<#if modMailMessage.anonymous>
, "additionalMessage": "<#include "modmail_anonymous_message_note">"
</#if>
,"timeStamp": "${message.timeCreated}"
}

View File

@@ -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>
<#if postedMessage.attachments?size gt 0>
,"imageUrl": "${postedMessage.attachments[0].proxyUrl}"

View File

@@ -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;
}

View File

@@ -149,6 +149,16 @@ public class BotServiceBean implements BotService {
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
public void shutdown() {

View File

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