forked from SteamWar/SteamWar
Fix CouncilChannel
This commit is contained in:
@@ -22,9 +22,7 @@ package de.steamwar.velocitycore.discord.channels;
|
||||
import de.steamwar.sql.SteamwarUser;
|
||||
import de.steamwar.velocitycore.VelocityCore;
|
||||
import de.steamwar.velocitycore.discord.DiscordBot;
|
||||
import it.unimi.dsi.fastutil.Pair;
|
||||
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.channel.concrete.ThreadChannel;
|
||||
import net.dv8tion.jda.api.utils.messages.MessageCreateBuilder;
|
||||
@@ -40,36 +38,29 @@ public class CouncilChannel extends StaticMessageChannel {
|
||||
}
|
||||
|
||||
public CouncilChannel(Role role, ThreadChannel threadChannel) {
|
||||
super(threadChannel, () -> {
|
||||
super(threadChannel, (consumer) -> {
|
||||
MessageCreateBuilder messageCreateBuilder = new MessageCreateBuilder();
|
||||
messageCreateBuilder.setContent("# Ratsmitglieder");
|
||||
|
||||
List<Member> members;
|
||||
try {
|
||||
members = DiscordBot.getGuild().findMembersWithRoles(role).onError(throwable -> {
|
||||
// Ignore
|
||||
}).get();
|
||||
} catch (Exception e) {
|
||||
DiscordBot.getGuild().findMembersWithRoles(role).onError(throwable -> {
|
||||
VelocityCore.getLogger().warning("Could not get members for " + role.getName());
|
||||
return messageCreateBuilder;
|
||||
}
|
||||
|
||||
members.stream()
|
||||
.map(member -> {
|
||||
SteamwarUser steamwarUser = SteamwarUser.get(member.getIdLong());
|
||||
String name = steamwarUser == null ? member.getEffectiveName() : steamwarUser.getUserName();
|
||||
UUID uuid = steamwarUser == null ? null : steamwarUser.getUUID();
|
||||
return Pair.of(name, uuid);
|
||||
})
|
||||
.sorted(Comparator.comparing(Pair::key))
|
||||
.forEach(pair -> {
|
||||
messageCreateBuilder.addEmbeds(new EmbedBuilder()
|
||||
.setTitle(pair.key())
|
||||
.setImage(pair.value() == null ? null : "https://api.steamwar.de/data/skin/" + pair.value().toString())
|
||||
.build());
|
||||
});
|
||||
|
||||
return messageCreateBuilder;
|
||||
consumer.accept(messageCreateBuilder);
|
||||
}).onSuccess(members -> {
|
||||
members.stream()
|
||||
.map(member -> {
|
||||
SteamwarUser steamwarUser = SteamwarUser.get(member.getIdLong());
|
||||
String name = steamwarUser == null ? member.getEffectiveName() : steamwarUser.getUserName();
|
||||
UUID uuid = steamwarUser == null ? null : steamwarUser.getUUID();
|
||||
return Map.entry(name, uuid);
|
||||
})
|
||||
.sorted(Comparator.comparing(Map.Entry::getKey))
|
||||
.forEach(entry -> {
|
||||
messageCreateBuilder.addEmbeds(new EmbedBuilder()
|
||||
.setTitle(entry.getKey())
|
||||
.setImage(entry.getValue() == null ? null : "https://api.steamwar.de/data/skin/" + entry.getValue().toString())
|
||||
.build());
|
||||
});
|
||||
consumer.accept(messageCreateBuilder);
|
||||
});
|
||||
}, event -> {
|
||||
});
|
||||
|
||||
|
||||
+10
-8
@@ -40,7 +40,7 @@ public class StaticMessageChannel extends DiscordChannel {
|
||||
}
|
||||
|
||||
private Message message;
|
||||
private final Supplier<MessageCreateBuilder> supplier;
|
||||
private final Consumer<Consumer<MessageCreateBuilder>> supplier;
|
||||
private final Consumer<GenericComponentInteractionCreateEvent> interaction;
|
||||
|
||||
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) {
|
||||
super(channel, 0);
|
||||
this.supplier = supplier;
|
||||
this.supplier = messageCreateBuilderConsumer -> supplier.get();
|
||||
this.interaction = interaction;
|
||||
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);
|
||||
this.supplier = supplier;
|
||||
this.interaction = interaction;
|
||||
@@ -77,11 +77,13 @@ public class StaticMessageChannel extends DiscordChannel {
|
||||
}
|
||||
|
||||
public void update() {
|
||||
if (message == null) {
|
||||
getChannel().sendMessage(supplier.get().build()).queue(m -> message = m);
|
||||
} else {
|
||||
message.editMessage(MessageEditData.fromCreateData(supplier.get().build())).queue();
|
||||
}
|
||||
supplier.accept(messageCreateBuilder -> {
|
||||
if (message == null) {
|
||||
getChannel().sendMessage(messageCreateBuilder.build()).queue(m -> message = m);
|
||||
} else {
|
||||
message.editMessage(MessageEditData.fromCreateData(messageCreateBuilder.build())).queue();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user