mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-14 19:56:29 +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)
|
.aUserInAServer(user)
|
||||||
.member(targetUser)
|
.member(targetUser)
|
||||||
.build();
|
.build();
|
||||||
modMailThreadService.createModMailThreadForUser(fullUser);
|
modMailThreadService.createModMailThreadForUser(fullUser, commandContext.getChannel());
|
||||||
}
|
}
|
||||||
return CommandResult.fromSuccess();
|
return CommandResult.fromSuccess();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ public class ModMailThreadServiceBean implements ModMailThreadService {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createModMailThreadForUser(FullUser aUserInAServer) {
|
public void createModMailThreadForUser(FullUser aUserInAServer, MessageChannel feedBackChannel) {
|
||||||
Long categoryId = configService.getLongValue(MODMAIL_CATEGORY, aUserInAServer.getAUserInAServer().getServerReference().getId());
|
Long categoryId = configService.getLongValue(MODMAIL_CATEGORY, aUserInAServer.getAUserInAServer().getServerReference().getId());
|
||||||
User user = aUserInAServer.getMember().getUser();
|
User user = aUserInAServer.getMember().getUser();
|
||||||
CompletableFuture<TextChannel> textChannel = channelService.createTextChannel(user.getName() + user.getDiscriminator(), aUserInAServer.getAUserInAServer().getServerReference(), categoryId);
|
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 -> {
|
textChannel.thenAccept(channel -> {
|
||||||
self.createThreadObject(channel, aUserInAServer);
|
self.createThreadObject(channel, aUserInAServer);
|
||||||
self.sendWelcomeMessage(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());
|
AUserInAServer chosenServer = choices.get(reactionEmote.getEmoji());
|
||||||
Member memberInServer = botService.getMemberInServer(chosenServer);
|
Member memberInServer = botService.getMemberInServer(chosenServer);
|
||||||
FullUser fullUser = FullUser.builder().member(memberInServer).aUserInAServer(chosenServer).build();
|
FullUser fullUser = FullUser.builder().member(memberInServer).aUserInAServer(chosenServer).build();
|
||||||
self.createModMailThreadForUser(fullUser);
|
self.createModMailThreadForUser(fullUser, channel);
|
||||||
botService.getInstance().removeEventListener(waiter);
|
botService.getInstance().removeEventListener(waiter);
|
||||||
})
|
})
|
||||||
.build();
|
.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 {
|
try {
|
||||||
FullUser fullUser = FullUser
|
FullUser fullUser = FullUser
|
||||||
.builder()
|
.builder()
|
||||||
.aUserInAServer(modMailThread.getUser())
|
.aUserInAServer(aUserInAServer)
|
||||||
.member(botService.getMemberInServer(modMailThread.getUser()))
|
.member(botService.getMemberInServer(aUserInAServer))
|
||||||
.build();
|
.build();
|
||||||
ModMailExceptionModel modMailExceptionModel = ModMailExceptionModel
|
ModMailExceptionModel modMailExceptionModel = ModMailExceptionModel
|
||||||
.builder()
|
.builder()
|
||||||
@@ -365,7 +369,7 @@ public class ModMailThreadServiceBean implements ModMailThreadService {
|
|||||||
modMailThreadManagementService.setModMailThreadState(modMailThread, ModMailThreadState.MOD_REPLIED);
|
modMailThreadManagementService.setModMailThreadState(modMailThread, ModMailThreadState.MOD_REPLIED);
|
||||||
}).exceptionally(throwable -> {
|
}).exceptionally(throwable -> {
|
||||||
log.error("Failed to send message to user {}", modMailThread.getUser().getUserReference().getId());
|
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;
|
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;
|
import net.dv8tion.jda.api.entities.TextChannel;
|
||||||
|
|
||||||
public interface ModMailThreadService {
|
public interface ModMailThreadService {
|
||||||
void createModMailThreadForUser(FullUser userInAServer);
|
void createModMailThreadForUser(FullUser userInAServer, MessageChannel feedBackChannel);
|
||||||
boolean hasOpenThread(AUserInAServer aUserInAServer);
|
boolean hasOpenThread(AUserInAServer aUserInAServer);
|
||||||
boolean hasOpenThread(AUser user);
|
boolean hasOpenThread(AUser user);
|
||||||
void setModMailCategoryTo(AServer server, Long categoryId);
|
void setModMailCategoryTo(AServer server, Long categoryId);
|
||||||
|
|||||||
@@ -191,8 +191,12 @@ public class ChannelServiceBean implements ChannelService {
|
|||||||
if(categoryById != null) {
|
if(categoryById != null) {
|
||||||
return categoryById.createTextChannel(name).submit();
|
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