Skip to content

Commit 2d7a99f

Browse files
committed
fix server locking with DMs disabled
1 parent 0354f3f commit 2d7a99f

File tree

1 file changed

+22
-14
lines changed

1 file changed

+22
-14
lines changed

src/main/java/net/discordjug/javabot/systems/moderation/server_lock/ServerLockManager.java

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -201,9 +201,12 @@ private void checkForEndOfRaid(Guild guild) {
201201
* @param event The user who joined.
202202
*/
203203
private void rejectUserDuringRaid(@NotNull GuildMemberJoinEvent event) {
204-
event.getUser().openPrivateChannel().queue(c ->
205-
c.sendMessage(Constants.INVITE_URL).setEmbeds(buildServerLockEmbed(event.getGuild())).queue(msg ->
206-
event.getMember().kick().queue()));
204+
event.getUser().openPrivateChannel().flatMap(c ->
205+
c.sendMessage(Constants.INVITE_URL)
206+
.setEmbeds(buildServerLockEmbed(event.getGuild())))
207+
.queue(msg -> kickMemberForServerlock(event.getGuild(), event.getMember()),
208+
//in case of error, still kick the user
209+
err -> kickMemberForServerlock(event.getGuild(), event.getMember()));
207210
String diff = new TimeUtils().formatDurationToNow(event.getMember().getTimeCreated());
208211
notificationService.withGuild(event.getGuild()).sendToModerationLog(c -> c.sendMessageFormat(
209212
"**%s** (%s old) tried to join this server.",
@@ -222,17 +225,13 @@ private void rejectUserDuringRaid(@NotNull GuildMemberJoinEvent event) {
222225
*/
223226
public void lockServer(Guild guild, @NotNull Collection<Member> potentialRaiders, @Nullable User lockedBy) {
224227
for (Member member : potentialRaiders) {
225-
member.getUser().openPrivateChannel().queue(c -> {
226-
c.sendMessage(Constants.INVITE_URL).setEmbeds(buildServerLockEmbed(guild)).queue(msg -> {
227-
member.kick().queue(
228-
success -> {},
229-
error -> notificationService.withGuild(guild).sendToModerationLog(m -> m.sendMessageFormat(
230-
"Could not kick member %s%n> `%s`",
231-
UserUtils.getUserTag(member.getUser()),
232-
error.getMessage()
233-
)));
234-
});
235-
});
228+
member.getUser().openPrivateChannel().flatMap(c ->
229+
c.sendMessage(Constants.INVITE_URL).setEmbeds(buildServerLockEmbed(guild))
230+
).queue(msg ->
231+
kickMemberForServerlock(guild, member),
232+
//if message cannot be sent, still kick them
233+
e -> kickMemberForServerlock(guild, member)
234+
);
236235
}
237236

238237
String membersString = potentialRaiders.stream()
@@ -264,6 +263,15 @@ public void lockServer(Guild guild, @NotNull Collection<Member> potentialRaiders
264263
}
265264
}
266265

266+
private void kickMemberForServerlock(Guild guild, Member member) {
267+
member.kick().queue(
268+
success -> {},
269+
error -> notificationService.withGuild(guild).sendToModerationLog(m -> m.sendMessageFormat(
270+
"Could not kick member %s%n> `%s`",
271+
UserUtils.getUserTag(member.getUser()),
272+
error.getMessage())));
273+
}
274+
267275
/**
268276
* Unlocks the server after it has been deemed that we're no longer in a raid.
269277
*

0 commit comments

Comments
 (0)