Discord-Bots warten auf ihre Einladung, Vorlage mit fünf Räumen

This commit is contained in:
MineTec committed 2026-10-18 15:12:15 +02:00
1 parent 52b5dd2788
commit 0574fd7f6d
2 files changed
+29 -6

No files matched your search

@@ -16,6 +16,8 @@ import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.channel.concrete.Category;
import net.dv8tion.jda.api.entities.channel.concrete.VoiceChannel;
import net.dv8tion.jda.api.events.guild.GuildJoinEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import net.dv8tion.jda.api.managers.AudioManager;
import net.dv8tion.jda.api.requests.GatewayIntent;
import net.dv8tion.jda.api.utils.MemberCachePolicy;
@@ -66,26 +68,38 @@ public final class DiscordRoomBot implements AudioSendHandler, AudioReceiveHandl
.enableCache(CacheFlag.VOICE_STATE)
.setMemberCachePolicy(MemberCachePolicy.VOICE)
.setAudioModuleConfig(new AudioModuleConfig().withDaveSessionFactory(new JDaveSessionFactory()))
.addEventListeners(new ListenerAdapter() {
@Override
public void onGuildJoin(@NotNull GuildJoinEvent event) {
if (event.getGuild().getId().equals(config.guild())) executor.execute(DiscordRoomBot.this::setupGuild);
}
})
.build()
.awaitReady();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
return;
}
setupGuild();
}
guild = jda.getGuildById(config.guild());
if (guild == null) {
LOG.error("{}: Bot {} ist nicht auf dem Discord-Server {}", room.name(), jda.getSelfUser().getName(), config.guild());
/** Channel suchen oder anlegen. Läuft beim Start und erneut, sobald der Bot auf den Server eingeladen wird. */
private void setupGuild() {
Guild found = jda.getGuildById(config.guild());
if (found == null) {
LOG.warn("{}: Bot {} ist noch nicht auf dem Discord-Server {}, warte auf Einladung",
room.name(), jda.getSelfUser().getName(), config.guild());
return;
}
VoiceChannel channel = resolveChannel(guild);
VoiceChannel channel = resolveChannel(found);
channelId = channel.getIdLong();
guild = found;
LOG.info("{}: Discord-Bot {} bereit, Channel #{}", room.name(), jda.getSelfUser().getName(), channel.getName());
String nickname = config.nickname().replace("%room%", room.name());
if (nickname.length() > 32) nickname = nickname.substring(0, 32);
if (!nickname.equals(guild.getSelfMember().getNickname())) {
guild.getSelfMember().modifyNickname(nickname).queue(null,
if (!nickname.equals(found.getSelfMember().getNickname())) {
found.getSelfMember().modifyNickname(nickname).queue(null,
e -> LOG.debug("{}: Nickname nicht gesetzt: {}", room.name(), e.getMessage()));
}
}