Discord-Bots warten auf ihre Einladung, Vorlage mit fünf Räumen
This commit is contained in:
1 parent
52b5dd2788
commit
0574fd7f6d
2 files changed
+29
-6
No files matched your search
@@ -50,3 +50,12 @@ rooms:
|
||||
- key: crosstalk-2
|
||||
name: Crosstalk 2
|
||||
discordToken: ""
|
||||
- key: crosstalk-3
|
||||
name: Crosstalk 3
|
||||
discordToken: ""
|
||||
- key: crosstalk-4
|
||||
name: Crosstalk 4
|
||||
discordToken: ""
|
||||
- key: crosstalk-5
|
||||
name: Crosstalk 5
|
||||
discordToken: ""
|
||||
@@ -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()));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user