Search code examples
javadiscorddiscord-jda

Discord JDA - getMembers() not working, returns 0 anyway


This is how my code is looking :

public void onGuildVoiceJoin(GuildVoiceJoinEvent event) {
 
    String channelId = event.getChannelJoined().getId();
     
    if (channelId.equals("904375329764814870")) {
         
        Member member = event.getMember();
        String memberName = event.getMember().getEffectiveName();
        Category category = event.getGuild().getCategoryById("904364634507706468");
         
        event.getGuild().createVoiceChannel("Coaching " + memberName).setParent(category).complete();
         
        List<VoiceChannel> channelList = event.getGuild().getVoiceChannelsByName("Coaching " + memberName, true);
        VoiceChannel channel = channelList.get(0);
      
        event.getGuild().moveVoiceMember(member, channel).queue();
         
         
        while (true){
                
            event.getGuild().getTextChannelById("904364671467929610").sendMessage(
                 
               "Number of people currently on the channel : " + channel.getMembers().size()
         
            ).queue();
             
            wait(3000);
                     
        }

My goal is to get the number of people currently inside the channel.

I thought the getMembers() method was the good method, but it's not working

I use the infinite while to see if the channel.getMembers().size() changes when i join/leave the channel but it still return 0.

How can i fix this ? And get the correct amount of people inside the channel as return.


Solution

  • The final goal of my code is to delete the channel when he's empty of user

    This can be achieved by just checking the member count in the GuildVoiceUpdateEvent:

    public void onGuildVoiceUpdate(GuildVoiceUpdateEvent event) {
      if (channel.getName().startsWith("Coaching ")) { // check if name matches the desired name
        if (channel.getMembers().isEmpty()) { // check if channel is empty
          channel.delete().queue(); // delete channel
        }
      } 
    }