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
|
- key: crosstalk-2
|
||||||
name: Crosstalk 2
|
name: Crosstalk 2
|
||||||
discordToken: ""
|
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.Member;
|
||||||
import net.dv8tion.jda.api.entities.channel.concrete.Category;
|
import net.dv8tion.jda.api.entities.channel.concrete.Category;
|
||||||
import net.dv8tion.jda.api.entities.channel.concrete.VoiceChannel;
|
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.managers.AudioManager;
|
||||||
import net.dv8tion.jda.api.requests.GatewayIntent;
|
import net.dv8tion.jda.api.requests.GatewayIntent;
|
||||||
import net.dv8tion.jda.api.utils.MemberCachePolicy;
|
import net.dv8tion.jda.api.utils.MemberCachePolicy;
|
||||||
@@ -66,26 +68,38 @@ public final class DiscordRoomBot implements AudioSendHandler, AudioReceiveHandl
|
|||||||
.enableCache(CacheFlag.VOICE_STATE)
|
.enableCache(CacheFlag.VOICE_STATE)
|
||||||
.setMemberCachePolicy(MemberCachePolicy.VOICE)
|
.setMemberCachePolicy(MemberCachePolicy.VOICE)
|
||||||
.setAudioModuleConfig(new AudioModuleConfig().withDaveSessionFactory(new JDaveSessionFactory()))
|
.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()
|
.build()
|
||||||
.awaitReady();
|
.awaitReady();
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
Thread.currentThread().interrupt();
|
Thread.currentThread().interrupt();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
setupGuild();
|
||||||
|
}
|
||||||
|
|
||||||
guild = jda.getGuildById(config.guild());
|
/** Channel suchen oder anlegen. Läuft beim Start und erneut, sobald der Bot auf den Server eingeladen wird. */
|
||||||
if (guild == null) {
|
private void setupGuild() {
|
||||||
LOG.error("{}: Bot {} ist nicht auf dem Discord-Server {}", room.name(), jda.getSelfUser().getName(), config.guild());
|
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;
|
return;
|
||||||
}
|
}
|
||||||
VoiceChannel channel = resolveChannel(guild);
|
VoiceChannel channel = resolveChannel(found);
|
||||||
channelId = channel.getIdLong();
|
channelId = channel.getIdLong();
|
||||||
|
guild = found;
|
||||||
LOG.info("{}: Discord-Bot {} bereit, Channel #{}", room.name(), jda.getSelfUser().getName(), channel.getName());
|
LOG.info("{}: Discord-Bot {} bereit, Channel #{}", room.name(), jda.getSelfUser().getName(), channel.getName());
|
||||||
|
|
||||||
String nickname = config.nickname().replace("%room%", room.name());
|
String nickname = config.nickname().replace("%room%", room.name());
|
||||||
if (nickname.length() > 32) nickname = nickname.substring(0, 32);
|
if (nickname.length() > 32) nickname = nickname.substring(0, 32);
|
||||||
if (!nickname.equals(guild.getSelfMember().getNickname())) {
|
if (!nickname.equals(found.getSelfMember().getNickname())) {
|
||||||
guild.getSelfMember().modifyNickname(nickname).queue(null,
|
found.getSelfMember().modifyNickname(nickname).queue(null,
|
||||||
e -> LOG.debug("{}: Nickname nicht gesetzt: {}", room.name(), e.getMessage()));
|
e -> LOG.debug("{}: Nickname nicht gesetzt: {}", room.name(), e.getMessage()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user