当前位置: 首页 > 知识库问答 >
问题:

Discord JDA-getMembers()不工作,仍返回0

曾山
2023-03-14

这就是我的代码的外观:

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);
                     
        }

我的目标是得到目前频道内的人数。

我认为getMembers()方法是个好方法,但它不起作用

我用无限的时间来观察这个通道。getMembers()。当我加入/离开频道时,size()会改变,但它仍然返回0。

我怎样才能解决这个问题?并获得正确的人数在通道内作为回报。

共有1个答案

勾岳
2023-03-14

我的代码的最终目标是在频道没有用户时删除该频道

这可以通过检查GuildVoiceUpdateEvents中的成员计数来实现:

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
    }
  } 
}
 类似资料:
  • null 还有...问题是这个方法返回错误的成员数。我创建了一个有5个成员的通道,但方法只返回了其中的3个成员。刷新页面后,一切都按预期工作-返回5个成员。好像有什么种族问题。我可以在每一个新频道上“等待”一两秒钟--这感觉很怪,但很可能解决了这个问题。 我做错什么了吗?

  • 单击按钮转到另一个活动,然后返回到原始活动。 我试图保存两个整数离开活动的另一个活动,然后稍后当我返回到原来的活动,我得到一个null包。 有人知道为什么这不起作用吗? 我使用savedInstanceState bundle在屏幕旋转时保存变量,它在这种情况下工作,但是当我离开查看另一个活动并稍后返回此活动时,该bundle没有保存。返回时获取空值。 onSavedInstanceState方法

  • 我正在尝试使用数据库的第一个图像设置ImageView。由于某种原因,它不起作用,我不知道为什么。方法loadImage在不同的类中调用。 我还试着用一个单独的方法设置图像,但我需要在创建整个舞台场景等的同时调用它,即使从第二个方法那样调用它,它也不起作用。 这是持有setImage的类 当调用时,设置图像会给我一个null值,imageview的默认值为null,但实际上我正在加载一个图像,甚至

  • 我在使用Guice时遇到空值问题。Nex我向您展示了一个类似场景的示例。我知道字段注入是一种不好的做法,但我希望它在演示中像这样工作 我有具体类命名为B(这是我要注入的一个): 我有一个名为A的抽象类,它有类B(我想通过字段注入注入的那个): 现在是另一个扩展A的具体类C: 我的GUI配置如下: 然后我对斯波克进行了测试: 谢谢:)

  • 我有一个带有简单表单的ejs模板,只有一个值: 在我的app.js我试图调用console.log(req.body),但它返回空 "{}". 这是我的app.js代码: 在其他问题上,很多人说他们会使用这款应用。使用(bodyParser.urlencoded({extended:false}));但一切都没有改变。我试过了。json()也是,但似乎没有什么变化。顺便说一句,我试过了。记录(请求

  • 为什么我不能使用“findOne()”只返回一个字段?在下面的代码中,所有字段都返回。我也尝试了“findOne()”,但仍然不起作用。有人能告诉我是我弄错了还是怎么回事吗? 在这种情况下,我只想返回“信息”字段 文档如下所示: