commit 4755eaa04cac6b3936626238d8cae92d65667532
parent 32491b2ad3b44e0bf15b9a16278c292cabdd7af0
Author: Wim Dupont <wim@wimdupont.com>
Date: Fri, 19 Jul 2024 22:13:16 +0200
retrieve textchannels by name
Diffstat:
3 files changed, 35 insertions(+), 21 deletions(-)
diff --git a/src/main/java/com/wimdupont/sxcybot/services/PvMRoleResolver.java b/src/main/java/com/wimdupont/sxcybot/services/PvMRoleResolver.java
@@ -2,12 +2,15 @@ package com.wimdupont.sxcybot.services;
import com.wimdupont.sxcybot.enums.PvmRole;
import com.wimdupont.sxcybot.exceptions.EntityNotFoundException;
+import com.wimdupont.sxcybot.repository.guild.dao.ChannelDetail;
import com.wimdupont.sxcybot.repository.guild.pvmrole.dao.PvmKcSnapshot;
import com.wimdupont.sxcybot.repository.guild.pvmrole.dao.PvmRoleUser;
import com.wimdupont.sxcybot.services.guild.ChannelDetailService;
import com.wimdupont.sxcybot.services.guild.pvmrole.PvmRoleAssignerService;
import com.wimdupont.sxcybot.services.guild.pvmrole.PvmRoleSnapshotComparatorService;
import com.wimdupont.sxcybot.services.guild.pvmrole.PvmRoleUserService;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.MessageChannel;
import net.dv8tion.jda.api.entities.PrivateChannel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -54,22 +57,29 @@ public class PvMRoleResolver {
scoreBoard.put(pvmRole, new LinkedHashMap<>());
}
channelDetailService.getJda().getGuilds().forEach(guild ->
- channelDetailService.findAll().stream().findAny().ifPresent(channelDetail ->
- (privateChannel == null ? guild.getTextChannelsByName(channelDetail.getPvmRoleChannel(), true) : List.of(privateChannel))
- .forEach(textChannel -> {
- for (PvmRoleUser pvmRoleUser : pvmRoleUserService.findAll()) {
- List<PvmKcSnapshot> pvmKcSnapshots = new ArrayList<>();
- try {
- pvmKcSnapshots.add(pvmRoleSnapshotComparatorService.takeSnapshot(textChannel, pvmRoleUser, false, persist));
- } catch (EntityNotFoundException e) {
- textChannel.sendMessage(e.getMessage()).queue();
- continue;
- }
- pvmRoleSnapshotComparatorService.updateScoreboard(pvmRoleUser, scoreBoard, persist ? null : pvmKcSnapshots);
- }
- pvmRoleAssignerService.postScoreboardAndAssignRoles(guild, textChannel, scoreBoard, channelDetail, persist);
- })
+ channelDetailService.findAll().forEach(channelDetail -> {
+ var textChannel = getTextChannel(guild, channelDetail, privateChannel);
+ for (PvmRoleUser pvmRoleUser : pvmRoleUserService.findAll()) {
+ List<PvmKcSnapshot> pvmKcSnapshots = new ArrayList<>();
+ try {
+ pvmKcSnapshots.add(pvmRoleSnapshotComparatorService.takeSnapshot(textChannel, pvmRoleUser, false, persist));
+ } catch (EntityNotFoundException e) {
+ textChannel.sendMessage(e.getMessage()).queue();
+ continue;
+ }
+ pvmRoleSnapshotComparatorService.updateScoreboard(pvmRoleUser, scoreBoard, persist ? null : pvmKcSnapshots);
+ }
+ pvmRoleAssignerService.postScoreboardAndAssignRoles(guild, textChannel, scoreBoard, channelDetail, persist);
+ }
)
);
}
+
+ private MessageChannel getTextChannel(Guild guild, ChannelDetail channelDetail, PrivateChannel privateChannel) {
+ MessageChannel textChannel = null;
+ if (privateChannel == null) {
+ textChannel = guild.getTextChannelById(channelDetail.getPvmRoleChannel());
+ }
+ return textChannel == null ? privateChannel : textChannel;
+ }
}
diff --git a/src/main/java/com/wimdupont/sxcybot/services/guild/pvmrole/PvmRoleAssignerService.java b/src/main/java/com/wimdupont/sxcybot/services/guild/pvmrole/PvmRoleAssignerService.java
@@ -25,7 +25,8 @@ import java.util.Optional;
@Transactional
public class PvmRoleAssignerService {
- public void postScoreboardAndAssignRoles(Guild guild, MessageChannel textChannel, Map<PvmRole, LinkedHashMap<PvmRoleUser, BigDecimal>> scoreBoard, ChannelDetail channelDetail, boolean persist) {
+ public void postScoreboardAndAssignRoles(Guild guild, MessageChannel textChannel, Map<PvmRole,
+ LinkedHashMap<PvmRoleUser, BigDecimal>> scoreBoard, ChannelDetail channelDetail, boolean persist) {
for (PvmRole pvmRole : scoreBoard.keySet()) {
String rolename = getRolename(pvmRole, channelDetail);
EmbedBuilder embedBuilder = new EmbedBuilder();
@@ -46,7 +47,8 @@ public class PvmRoleAssignerService {
int winningRank = 1;
for (Map.Entry<PvmRoleUser, BigDecimal> entry : scoreBoard.get(pvmRole).entrySet()) {
if (limit-- == 0) break;
- Optional<Member> member = memberlist.stream().filter(f -> f.getUser().getId().equals(entry.getKey().getDiscordId())).findAny();
+ Optional<Member> member = memberlist.stream()
+ .filter(f -> f.getUser().getId().equals(entry.getKey().getDiscordId())).findAny();
if (member.isPresent()) {
embedBuilder.addField(String.format("#%s %s", i, entry.getKey().getRsn()), String.format("%s with a score of %s!", member.get(), entry.getValue()), false);
if (i == winningRank && persist) {
diff --git a/src/main/java/com/wimdupont/sxcybot/util/ReleaseNotesUtil.java b/src/main/java/com/wimdupont/sxcybot/util/ReleaseNotesUtil.java
@@ -1,6 +1,7 @@
package com.wimdupont.sxcybot.util;
+import com.wimdupont.sxcybot.repository.guild.dao.ChannelDetail;
import com.wimdupont.sxcybot.services.guild.ChannelDetailService;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.JDA;
@@ -41,10 +42,11 @@ public class ReleaseNotesUtil {
embedBuilder.addField(entry.getKey(), entry.getValue(), false);
}
- channelDetailService.findAll().stream().findAny()
- .ifPresent(detail -> jda.getTextChannelsByName(detail.getBotUpdateChannel(), false).forEach(f ->
- f.sendMessageEmbeds(embedBuilder.build()).queue()
- ));
+ for (ChannelDetail channelDetail : channelDetailService.findAll()) {
+ var channel = jda.getTextChannelById(channelDetail.getBotUpdateChannel());
+ if (channel != null)
+ channel.sendMessageEmbeds(embedBuilder.build()).queue();
+ }
}
}