Discord JDA getOnlineStatus() 未检查服务器上的在线成员

Posted

技术标签:

【中文标题】Discord JDA getOnlineStatus() 未检查服务器上的在线成员【英文标题】:Discord JDA getOnlineStatus() is not checking for online members on the server 【发布时间】:2020-10-23 04:48:32 【问题描述】:

我正在尝试制作一个机器人,它将使用 JDA 列出不和谐服务器上的所有在线成员。我使用了 if(m.getOnlineStatus == OnlineStatus.ONLINE) 但这不起作用 - 它不包含单个用户名。我曾尝试使用 .equals() 而不是 == 但这也不起作用。我正在使用嵌入构建器并将名称添加到描述中。

但是,损坏的不是 .getMembers(),因为如果我从 if 语句中删除 onlineStatus 条件,它会返回服务器的所有成员,因为它应该这样做。

这是我的这个命令的代码:

if(event.getMessage().getContentRaw().equalsIgnoreCase("!memberList")) 
    Guild guild = event.getGuild();
    List<Member> users = guild.getMembers();
    int playerCount = guild.getMemberCount();
            
    EmbedBuilder builder = new EmbedBuilder();
        
    builder.setTitle("There " + ((playerCount == 1) ? "is " : "are ") + playerCount + " player" + (playerCount == 1 ? "" : "s") + " online!");
            
    for (Member m : users) 

        if(!m.getUser().isBot() && m.getOnlineStatus() == OnlineStatus.ONLINE) 
            builder.appendDescription(m.getEffectiveName() + "\n");
        
                
    
            
    builder.setColor(Color.MAGENTA);
    builder.setFooter("Requested by " + event.getAuthor().getName());
    event.getChannel().sendMessage(builder.build()).complete();

我的 JDABuilder 代码,JDA 4.2.0:

JDA bot;
        
try 
    bot = JDABuilder.createDefault(DISCORD_TOKEN)
            .setChunkingFilter(ChunkingFilter.ALL)
            .addEventListeners(new MessageHandler())
            .setMemberCachePolicy(MemberCachePolicy.ALL)
            .enableIntents(GatewayIntent.GUILD_MEMBERS)
            .build();
 catch(LoginException e) 
    System.out.println("Oopsie! Someone did a poopsie!");
    e.printStackTrace();

【问题讨论】:

您能否提供JDABuilder 的代码和您的版本? 底部添加了JDABuilder代码+版本 【参考方案1】:

您需要启用GUILD_PRESENCES Intent 以跟踪在线状态。将此添加到您的构建器:enableIntents(GatewayIntent.GUILD_PRESENCES) 并在您的应用程序仪表板中启用它。

【讨论】:

谢谢,如果它告诉您在您尝试使用它时没有激活它会很好:/

以上是关于Discord JDA getOnlineStatus() 未检查服务器上的在线成员的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JDA 在 Discord 中创建文本通道:Java Discord Api

Discord JDA OnReady 不起作用

如何修复此 JDA discord bot 错误?

使用 JDA 在 Discord 消息中创建倒数计时器

如何使用 JDA 在 Discord 服务器(不是用户/机器人 DM)中创建私人频道:Java Discord API

如何添加多个反应以嵌入 Discord JDA