Fix CouncilChannel

This commit is contained in:
2026-05-21 10:16:17 +02:00
parent 714f86a55b
commit 3b6fdbeec3
2 changed files with 30 additions and 37 deletions
@@ -22,9 +22,7 @@ package de.steamwar.velocitycore.discord.channels;
import de.steamwar.sql.SteamwarUser; import de.steamwar.sql.SteamwarUser;
import de.steamwar.velocitycore.VelocityCore; import de.steamwar.velocitycore.VelocityCore;
import de.steamwar.velocitycore.discord.DiscordBot; import de.steamwar.velocitycore.discord.DiscordBot;
import it.unimi.dsi.fastutil.Pair;
import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Role; import net.dv8tion.jda.api.entities.Role;
import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel; import net.dv8tion.jda.api.entities.channel.concrete.ThreadChannel;
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder; import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder;
@@ -40,36 +38,29 @@ public class CouncilChannel extends StaticMessageChannel {
} }
public CouncilChannel(Role role, ThreadChannel threadChannel) { public CouncilChannel(Role role, ThreadChannel threadChannel) {
super(threadChannel, () -> { super(threadChannel, (consumer) -> {
MessageCreateBuilder messageCreateBuilder = new MessageCreateBuilder(); MessageCreateBuilder messageCreateBuilder = new MessageCreateBuilder();
messageCreateBuilder.setContent("# Ratsmitglieder"); messageCreateBuilder.setContent("# Ratsmitglieder");
DiscordBot.getGuild().findMembersWithRoles(role).onError(throwable -> {
List<Member> members;
try {
members = DiscordBot.getGuild().findMembersWithRoles(role).onError(throwable -> {
// Ignore
}).get();
} catch (Exception e) {
VelocityCore.getLogger().warning("Could not get members for " + role.getName()); VelocityCore.getLogger().warning("Could not get members for " + role.getName());
return messageCreateBuilder; consumer.accept(messageCreateBuilder);
} }).onSuccess(members -> {
members.stream()
members.stream() .map(member -> {
.map(member -> { SteamwarUser steamwarUser = SteamwarUser.get(member.getIdLong());
SteamwarUser steamwarUser = SteamwarUser.get(member.getIdLong()); String name = steamwarUser == null ? member.getEffectiveName() : steamwarUser.getUserName();
String name = steamwarUser == null ? member.getEffectiveName() : steamwarUser.getUserName(); UUID uuid = steamwarUser == null ? null : steamwarUser.getUUID();
UUID uuid = steamwarUser == null ? null : steamwarUser.getUUID(); return Map.entry(name, uuid);
return Pair.of(name, uuid); })
}) .sorted(Comparator.comparing(Map.Entry::getKey))
.sorted(Comparator.comparing(Pair::key)) .forEach(entry -> {
.forEach(pair -> { messageCreateBuilder.addEmbeds(new EmbedBuilder()
messageCreateBuilder.addEmbeds(new EmbedBuilder() .setTitle(entry.getKey())
.setTitle(pair.key()) .setImage(entry.getValue() == null ? null : "https://api.steamwar.de/data/skin/" + entry.getValue().toString())
.setImage(pair.value() == null ? null : "https://api.steamwar.de/data/skin/" + pair.value().toString()) .build());
.build()); });
}); consumer.accept(messageCreateBuilder);
});
return messageCreateBuilder;
}, event -> { }, event -> {
}); });
@@ -40,7 +40,7 @@ public class StaticMessageChannel extends DiscordChannel {
} }
private Message message; private Message message;
private final Supplier<MessageCreateBuilder> supplier; private final Consumer<Consumer<MessageCreateBuilder>> supplier;
private final Consumer<GenericComponentInteractionCreateEvent> interaction; private final Consumer<GenericComponentInteractionCreateEvent> interaction;
public StaticMessageChannel(String channel, Supplier<MessageCreateBuilder> supplier) { public StaticMessageChannel(String channel, Supplier<MessageCreateBuilder> supplier) {
@@ -50,12 +50,12 @@ public class StaticMessageChannel extends DiscordChannel {
public StaticMessageChannel(String channel, Supplier<MessageCreateBuilder> supplier, Consumer<GenericComponentInteractionCreateEvent> interaction) { public StaticMessageChannel(String channel, Supplier<MessageCreateBuilder> supplier, Consumer<GenericComponentInteractionCreateEvent> interaction) {
super(channel, 0); super(channel, 0);
this.supplier = supplier; this.supplier = messageCreateBuilderConsumer -> supplier.get();
this.interaction = interaction; this.interaction = interaction;
init(); init();
} }
public StaticMessageChannel(MessageChannel channel, Supplier<MessageCreateBuilder> supplier, Consumer<GenericComponentInteractionCreateEvent> interaction) { public StaticMessageChannel(MessageChannel channel, Consumer<Consumer<MessageCreateBuilder>> supplier, Consumer<GenericComponentInteractionCreateEvent> interaction) {
super(channel, 0); super(channel, 0);
this.supplier = supplier; this.supplier = supplier;
this.interaction = interaction; this.interaction = interaction;
@@ -77,11 +77,13 @@ public class StaticMessageChannel extends DiscordChannel {
} }
public void update() { public void update() {
if (message == null) { supplier.accept(messageCreateBuilder -> {
getChannel().sendMessage(supplier.get().build()).queue(m -> message = m); if (message == null) {
} else { getChannel().sendMessage(messageCreateBuilder.build()).queue(m -> message = m);
message.editMessage(MessageEditData.fromCreateData(supplier.get().build())).queue(); } else {
} message.editMessage(MessageEditData.fromCreateData(messageCreateBuilder.build())).queue();
}
});
} }
@Override @Override