mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-03-30 23:15:50 +00:00
added user facing message in case the initial modmail creation fails
This commit is contained in:
@@ -60,7 +60,7 @@ public class Contact extends AbstractConditionableCommand {
|
||||
.aUserInAServer(user)
|
||||
.member(targetUser)
|
||||
.build();
|
||||
modMailThreadService.createModMailThreadForUser(fullUser);
|
||||
modMailThreadService.createModMailThreadForUser(fullUser, commandContext.getChannel());
|
||||
}
|
||||
return CommandResult.fromSuccess();
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@ public class ModMailThreadServiceBean implements ModMailThreadService {
|
||||
|
||||
|
||||
@Override
|
||||
public void createModMailThreadForUser(FullUser aUserInAServer) {
|
||||
public void createModMailThreadForUser(FullUser aUserInAServer, MessageChannel feedBackChannel) {
|
||||
Long categoryId = configService.getLongValue(MODMAIL_CATEGORY, aUserInAServer.getAUserInAServer().getServerReference().getId());
|
||||
User user = aUserInAServer.getMember().getUser();
|
||||
CompletableFuture<TextChannel> textChannel = channelService.createTextChannel(user.getName() + user.getDiscriminator(), aUserInAServer.getAUserInAServer().getServerReference(), categoryId);
|
||||
@@ -89,6 +89,10 @@ public class ModMailThreadServiceBean implements ModMailThreadService {
|
||||
textChannel.thenAccept(channel -> {
|
||||
self.createThreadObject(channel, aUserInAServer);
|
||||
self.sendWelcomeMessage(channel, aUserInAServer);
|
||||
}).exceptionally(throwable -> {
|
||||
log.error("Failed to create mod mail thread", throwable);
|
||||
sendModMailFailure("modmail_exception_failed_to_create_mod_mail_thread", aUserInAServer.getAUserInAServer(), null, feedBackChannel, throwable);
|
||||
return null;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -150,7 +154,7 @@ public class ModMailThreadServiceBean implements ModMailThreadService {
|
||||
AUserInAServer chosenServer = choices.get(reactionEmote.getEmoji());
|
||||
Member memberInServer = botService.getMemberInServer(chosenServer);
|
||||
FullUser fullUser = FullUser.builder().member(memberInServer).aUserInAServer(chosenServer).build();
|
||||
self.createModMailThreadForUser(fullUser);
|
||||
self.createModMailThreadForUser(fullUser, channel);
|
||||
botService.getInstance().removeEventListener(waiter);
|
||||
})
|
||||
.build();
|
||||
@@ -224,12 +228,12 @@ public class ModMailThreadServiceBean implements ModMailThreadService {
|
||||
}
|
||||
}
|
||||
|
||||
private void sendModMailFailure(String template, ModMailThread modMailThread, MessageChannel channel, Throwable throwable) {
|
||||
private void sendModMailFailure(String template, AUserInAServer aUserInAServer, ModMailThread modMailThread, MessageChannel channel, Throwable throwable) {
|
||||
try {
|
||||
FullUser fullUser = FullUser
|
||||
.builder()
|
||||
.aUserInAServer(modMailThread.getUser())
|
||||
.member(botService.getMemberInServer(modMailThread.getUser()))
|
||||
.aUserInAServer(aUserInAServer)
|
||||
.member(botService.getMemberInServer(aUserInAServer))
|
||||
.build();
|
||||
ModMailExceptionModel modMailExceptionModel = ModMailExceptionModel
|
||||
.builder()
|
||||
@@ -365,7 +369,7 @@ public class ModMailThreadServiceBean implements ModMailThreadService {
|
||||
modMailThreadManagementService.setModMailThreadState(modMailThread, ModMailThreadState.MOD_REPLIED);
|
||||
}).exceptionally(throwable -> {
|
||||
log.error("Failed to send message to user {}", modMailThread.getUser().getUserReference().getId());
|
||||
sendModMailFailure("modmail_exception_cannot_message_user", modMailThread, feedBack, throwable);
|
||||
sendModMailFailure("modmail_exception_cannot_message_user", modMailThread.getUser(), modMailThread, feedBack, throwable);
|
||||
return null;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"author": {
|
||||
"name": "${user.member.effectiveName}",
|
||||
"avatar": "${user.member.user.effectiveAvatarUrl}"
|
||||
},
|
||||
"color" : {
|
||||
"r": 200,
|
||||
"g": 0,
|
||||
"b": 255
|
||||
},
|
||||
"description": "<#include "modmail_failed_to_create_mod_mail_thread">"
|
||||
}
|
||||
@@ -11,7 +11,7 @@ import net.dv8tion.jda.api.entities.MessageChannel;
|
||||
import net.dv8tion.jda.api.entities.TextChannel;
|
||||
|
||||
public interface ModMailThreadService {
|
||||
void createModMailThreadForUser(FullUser userInAServer);
|
||||
void createModMailThreadForUser(FullUser userInAServer, MessageChannel feedBackChannel);
|
||||
boolean hasOpenThread(AUserInAServer aUserInAServer);
|
||||
boolean hasOpenThread(AUser user);
|
||||
void setModMailCategoryTo(AServer server, Long categoryId);
|
||||
|
||||
@@ -191,8 +191,12 @@ public class ChannelServiceBean implements ChannelService {
|
||||
if(categoryById != null) {
|
||||
return categoryById.createTextChannel(name).submit();
|
||||
}
|
||||
return null;
|
||||
CompletableFuture<TextChannel> objectCompletableFuture = new CompletableFuture<>();
|
||||
objectCompletableFuture.completeExceptionally(new AbstractoRunTimeException("Mod mail category is not setup."));
|
||||
return objectCompletableFuture;
|
||||
}
|
||||
return null;
|
||||
CompletableFuture<TextChannel> objectCompletableFuture = new CompletableFuture<>();
|
||||
objectCompletableFuture.completeExceptionally(new AbstractoRunTimeException("Guild to create mod mail channel for was not found."));
|
||||
return objectCompletableFuture;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
Failed to create mod mail thread.
|
||||
Reference in New Issue
Block a user