Skip to content

Commit

Permalink
fix empty voice channel removal
Browse files Browse the repository at this point in the history
  • Loading branch information
PinkGoosik committed Jan 31, 2025
1 parent f8f6f0c commit 437de69
Showing 1 changed file with 28 additions and 20 deletions.
48 changes: 28 additions & 20 deletions src/main/java/ru/pinkgoosik/kitsun/feature/AutoChannelsManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.channel.concrete.VoiceChannel;
import net.dv8tion.jda.api.entities.channel.unions.AudioChannelUnion;
import net.dv8tion.jda.api.events.guild.voice.GuildVoiceUpdateEvent;
import ru.pinkgoosik.kitsun.DiscordApp;
import ru.pinkgoosik.kitsun.cache.ServerData;
Expand Down Expand Up @@ -46,34 +47,41 @@ public void onGuildVoiceUpdate(GuildVoiceUpdateEvent event) {
var joinedChannel = event.getChannelJoined();
var leftChannel = event.getChannelLeft();

if(joinedChannel != null) {
if(joinedChannel != null && leftChannel == null) { // First ever channel join
if(joinedChannel.getId().equals(this.parentChannel)) {
this.onParentChannelJoin(member);
return;
this.createSession(member);
}
getSession(joinedChannel.getId()).ifPresent(session -> {
if(!(leftChannel != null && leftChannel.getId().equals(parentChannel))) {
session.updateHistory("<@" + member.getId() + ">" + " joined");
}
});
else this.onChannelJoin(member, joinedChannel);
}

if(leftChannel != null) {
getSession(leftChannel.getId()).ifPresent(session -> {
session.updateHistory("<@" + member.getId() + ">" + " left");

if(session.owner.equals(member.getId()) && leftChannel.getMembers().isEmpty()) {
leftChannel.delete().queue();
else if(joinedChannel != null) { // Moved from channel to channel
if(joinedChannel.getId().equals(this.parentChannel)) {
if(!this.hasEmptySession(member)) {
this.createSession(member);
this.onChannelLeft(member, leftChannel);
}
});
}
else if(!leftChannel.getId().equals(this.parentChannel)) this.onChannelJoin(member, joinedChannel);
}
else if(leftChannel != null) { // Completely left channel
this.onChannelLeft(member, leftChannel);
}
ServerData.get(server).autoChannels.save();
}

public void onParentChannelJoin(Member member) {
if(!this.hasEmptySession(member)) {
this.createSession(member);
}
void onChannelJoin(Member member, AudioChannelUnion channel) {
getSession(channel.getId()).ifPresent(session -> {
session.updateHistory("<@" + member.getId() + ">" + " joined");
});
}

void onChannelLeft(Member member, AudioChannelUnion channel) {
getSession(channel.getId()).ifPresent(session -> {
session.updateHistory("<@" + member.getId() + ">" + " left");

if(channel.getMembers().isEmpty()) {
channel.delete().queue();
}
});
}

private boolean hasEmptySession(Member member) {
Expand Down

0 comments on commit 437de69

Please sign in to comment.